题意
咕咕东是个贪玩的孩子,有一天,他从上古遗迹中得到了一个神奇的圆环。这个圆环由字母表组成首尾相接的环,环上有一个指针,最初指向字母a。咕咕东每次可以顺时针或者逆时针旋转一格。例如,a顺时针旋转到z,逆时针旋转到b。咕咕东手里有一个字符串,但是他太笨了,所以他来请求你的帮助,问最少需要转多少次。
Input
输入只有一行,是一个字符串。
Output
输出最少要转的次数。
Sample Input
zeus
Sample Output
18
思路
这道题,是模拟类型的题。就是用代码模拟过程。
从当前点转到下一个点,逆时针方向和顺时针方向那个转动的次数最小就选哪个!
累加,直到所有字符都转到。
代码
#include<iostream>
#include<cmath>
#include<string>
using namespace std;
int main()
{
string str;
cin>>str; //读入字符串
int min=0;
int x,y;
char now='a'; //刚开始为'a'
for(int i=0;i<str.length();i++)
{
x=abs(str[i]-now); //顺时针方向
y=26-x; //逆时针
now=str[i]; //更新当前节点
min+=std::min(x,y) ; //选择最小方向加入
}
cout<<min;
return 0;
}
总结:
这道题很简单,但是自己NC,非要用别的方法读字符串,评测得时候可能读入除了问题导致WA,
(我自己的文件读入没问题),反思:老老实实做题,别给自己找刺激。