zoukankan      html  css  js  c++  java
  • BUPT复试专题—字符串转换(2013计院)

    题目描述

    我们将仅由若干个同一小写字母构成的字符串称之为简单串,例如"aaaa"是一个简单串,而"abcd"则不是简单串。现在给你一个仅由小写字母组成的字符串,你需要用最小的花费,将其转换成一个简单串。 花费的计算规则如下:将a到z这26个小写字母从左到右排成一排,则每个字母都有左右两个邻居,我们认为a的左邻居是z,z的右邻居是a。一个字母只能转换成其相邻的字母,转换的花费为1。一个字母可以进行多次转换,例如将a转换成d,可以进行如下的步骤: a->b->c->d,花费为3。字符串的转换花费为所有字母转换花费之和。例如将字符串"abbbz"转换成简单串的最小花费为3,转换后的结果为"bbbbb"。

    输入格式

    第一行一个整数T(T100),表示测试数据的组数。 每组测试数据只有一行,为仅含小写字母的字符串,字符串长度不超过1000。

    输出格式

    对于每一组数据,输出一个整数,表示将字符串转换成简单串的最小花费。

    输入样例

    2
    abbba
    abbac
    

    输出样例

    2
    3


    注意审题是循环比较
    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<cstring>
    #include<map>
    #define INF 0x7fffffff
    using namespace std;
    int mins(int a,int b,int c)
    {
        if(a>=b&&c>=b)
            return b;
        else if(c>=a&&b>=a)
            return a;
        else if(a>=c&&b>=c)
            return c;
    }
    int main()
    {
        int tes,m;
        while(~scanf("%d",&tes))
        {
            map<int,int> donser;
            while(tes--)
            {
                for(int i=0;i<26;i++)
                    donser[i]=0;
                string s;
                cin>>s;
                int y=0;
                while(y<s.size())
                {
                    donser[s[y]-'a']++;
                    y++;
                }
                int number=s.size();
                int min=INF;
                for(int i=0;i<26;i++)
                {
                    int tor=0;
                    for(int j=0;j<26;j++)
                    {
                        tor+=mins(abs(j-i),abs(26-j+i),abs(26-i+j))*donser[j];
                        //cout<<"*"<<tor<<" "<<i<<" "<<j<<" "<<donser[j]<<endl;
                    }
                    if(tor<min)
                        min=tor;
                }
                cout<<min<<endl;
                
            }
        }
        return 0;
    }
     
  • 相关阅读:
    AtCoder Regular Contest 093
    AtCoder Regular Contest 094
    G. Gangsters in Central City
    HGOI 20190711 题解
    HGOI20190710 题解
    HGOI 20190709 题解
    HGOI 20190708 题解
    HGOI20190707 题解
    HGOI20190706 题解
    HGOI 20190705 题解
  • 原文地址:https://www.cnblogs.com/dzzy/p/8661161.html
Copyright © 2011-2022 走看看