CSP-M1 A - 咕咕东的奇遇
题目描述
咕咕东是个贪玩的孩子,有一天,他从上古遗迹中得到了一个神奇的圆环。这个圆环由字母表组成首尾相接的环,环上有一个指针,最初指向字母a。咕咕东每次可以顺时针或者逆时针旋转一格。例如,a顺时针旋转到z,逆时针旋转到b。咕咕东手里有一个字符串,但是他太笨了,所以他来请求你的帮助,问最少需要转多少次。
加个示意图
输入格式
输入只有一行,是一个字符串。
输出格式
输出最少要转的次数。
样例输入
zeus
样例输出
18
测试数据
数据点 | 字符串长度 |
---|---|
1,2 | 小于等于10 |
3,4,5 | 小于等于100 |
6,7,8,9,10 | 小于等于10000 |
Code
#include<iostream>
using namespace std;
int cmp(char c1,char c2){//绝对值
if((c1-c2)>0){return (c1-c2);
}else{return (c2-c1);
}
}
int main(){
char c[100000];
int a,b;
cin>>c;
//cout<<c;
int i=0;
int t;
b=a;
if(cmp(c[i],'a')>13){//从 a 开始
a+=26-cmp(c[i],'a');
}else{
a+=cmp(c[i],'a');
}
while(c[i]<=122&&c[i]>=97){//确保输入a~z
b=a;
t=c[i];
if(cmp(c[i],c[i+1])>13){//距离超过半圈就用26-距离
a+=26-cmp(c[i],c[i+1]);
}else{
a+=cmp(c[i],c[i+1]);
}
t=cmp(c[i],c[i+1]);
i++;
}
cout<<b;
}