zoukankan      html  css  js  c++  java
  • 【经验总结】北邮OJ

    时间限制 1000 ms 内存限制 65536 KB

    题目描述

    我们将仅由若干个同一小写字母构成的字符串称之为简单串,例如"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


    分析:两个for循环枚举输入的每组数据中的每个字符到达每个字符的花费,然后比较求出最小值输出。

    //翻了个错误,只意识到向后转换没有意识到向前也可以转换,这两个中选花费最少的
    //#define min(a,b) a<b?a:b
    //最小值得求法 min(abs(i-j),26-abs(i-j));

    #include <iostream>
    #include <string>
    #include <cmath>
    //#include <cstdlib>
    #define min(a,b) a<b?a:b
    using namespace std;
    int main ()
    {
    string mystr;
    int n;
    int m[1001];//暂存数据
    char mych = NULL;
    int cost;
    int mymin;
    int myout[101];

    cin >> n;
    for (int i_1 = 0;i_1 < n;i_1++)
    {
    cin >> mystr;

    //计算每一个字符的花费,最后比较选出最小
    for (int i_2 = 0;i_2 < mystr.length();i_2++)
    {
    //if (mych == mystr[i_2])//已经有过这个字母了,不需要继续比较了
    //{
    // continue;
    //}
    mych = mystr[i_2];
    cost = 0;
    for (int i_3 = 0;i_3 < mystr.length();i_3++)
    {
    cost += min(abs(mystr[i_3] - mych),26-abs((mystr[i_3] - mych)));//计算出每一个单词的花费
    }
    m[i_2] = cost;//暂存一组数据中每个单词的最小花费
    //cout <<cost <<endl;
    }
    //cout << m[0]<< m[1]<< m[2]<<endl;
    //比较,选出改组的最小值
    mymin = m[0];
    for (int i_4 = 1;i_4 < mystr.length();i_4++)
    {
    if (mymin > m[i_4])
    {
    mymin = m[i_4];
    }
    }
    //cout << mymin <<endl;
    myout[i_1] = mymin;
    //cout << sizeof(m)/sizeof(m[0]) <<endl;
    }

    //输出结果
    for (int i_5 = 0;i_5 < n; i_5++)
    {
    cout << myout[i_5] <<endl;
    }

    return 0;
    }

  • 相关阅读:
    [UE4]创建多把枪,使用Class,参数的对象类型
    [UE4]换枪需要做的事,容器:数组、集合、Map
    [UE4]蓝图重构
    [UE4]为什么会有类型检查
    [UE4]ChildActor组件
    [UE4]Character,飞行模式。
    [UE4]Pawn和Controller,第一人称和第三人称切换
    [UE4]组件
    [UE4]Acotr
    [UE4]封装、继承、多态
  • 原文地址:https://www.cnblogs.com/lauzhishuai/p/6511910.html
Copyright © 2011-2022 走看看