简单模拟
代码:
#include<iostream>
#include<cstring>
using namespace std;
//预处理
int a[26]={1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,4,1,2,3,1,2,3,4};
int belong[26]={1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,6,7,7,7,8,8,8,8};
char c[105];
int solve(int n){
int ans=a[c[1]-'a'];
for(int i=2;i<=n;++i){
//如果前一个字符与当前字符属于同一个按键
if(belong[c[i-1]-'a']==belong[c[i]-'a']) ans+=2+a[c[i]-'a'];
//不属于同一个按键
else ans+=a[c[i]-'a'];
}
return ans;
}
int main(){
while(~scanf("%s",c+1)){
int n=strlen(c+1);
printf("%d\n",solve(n));
}
return 0;
}