小可像《博物馆奇妙夜》的主人公一样,在博物馆找到了一份夜间保安的工作。第一天晚上,他收到了一台压花机,要对整个博物馆的展品名称进行打印。压花机是一种可以“打印”塑料带上文字的机器,文本按顺序一个字符一个字符的打印。该设备由一个带有小写英文字母的轮子、一个指向当前字母的箭头和一个打印所选字母的按钮组成。一次移动允许将字母轮顺时针或逆时针旋转一步。最初,箭头指向字母‘ a ’。其他字母的位置如图所示。
小可将展品放到底座上后,他必须在塑料胶带上打印其名称并将其贴在相应的展品上。注意:每次转字母轮都是从箭头最初的位置开始。小可担心一些展品可能会活过来并开始攻击他,所以他想尽快把名字打印出来。请你帮助他,为给定的字符串找到打印它所需的轮子的最小旋转次数。
输入描述
输入一个只有小写字母组成的展品名称,字符串长度不超过100
输出描述
输出打印这个字符串所需的最小字母轮的旋转次数
输入样例
lincoln
输出样例
47
提示
a->l 逆时针转11次
l->i 顺时针转3次
i->n 逆时针转5次
n->c 顺时针转11次
c->o 逆时针转12次
o->l 顺时针转3次
l->n 逆时针转2次
我的代码是这样的
#include<bits/stdc++.h>
using namespace std;
int main(){
string a;
cin>>a;
long long cnt=0;
// long long b=0;
char c='a';
for(int i=0; i<a.size(); i++){
if(a[i]>=c){
if(a[i]-c<=13){
cnt+=a[i]-c;
}
else{
cnt+='z'-a[i]+c-'a';
if(a[i]=='z'){
cnt++;
}
}
}
else{
if(c-a[i]<=13){
cnt+=c-a[i];
}
else{
cnt+='z'-c+a[i]-'a';
if(c=='z'){
cnt++;
}
}
}
c=a[i];
// cout<<cnt-b<<" ";
// b=cnt;
}
cout<<cnt;
return 0;
}
样例能对,但只能得49分,怎么办啊