←求个赞
$\ \ $
$\ \ $
$$\Large暴力出奇迹$$
$$\Large骗分过样例$$
$$\Large暴搜挂着机$$
$$\Large打表上省一$$
没错,这题就可以打表做
详细思路我已经用注释标出了,还有啥不懂的可以在评论区留言~
C++ 代码
#include<bits/stdc++.h>
#pragma GCC optimize(3)
using namespace std;
string str;
int c[]={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 s[]={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}; //字母所在的按键
int main(){
while(cin>>str){
int ans=0;
for(int i=0;i<str.size();i++){
if(i>0&&s[str[i]-'a']==s[str[i-1]-'a']) ans+=2; //判断str[i]和str[i-1]是否在一个按键上
ans+=c[str[i]-'a']; //加上字母要按的次数
}
cout<<ans<<endl; //输出答案
}
return 0;
}