题目描述:
题目思路
这个题目最开始理解感觉有点吃力。后面发现题目最开始的几个字:“手机键盘输入字母的形式”,然后就想到了,可能是按照手机9键来的,如下图:
题目理解,一切就都顺畅了一下。
ac代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int judge(char c){//查询一个字符需要按几下
if(c=='a'||c=='d'||c=='g'||c=='j'||c=='m'||c=='p'||c=='t'||c=='w'){
return 1;
}else if(c=='b'||c=='e'||c=='h'||c=='k'||c=='n'||c=='q'||c=='u'||c=='x'){
return 2;
}else if(c=='c'||c=='f'||c=='i'||c=='l'||c=='o'||c=='r'||c=='v'||c=='y'){
return 3;
}else {
return 4;
}
}
int queryKey(char a,char b){//查询两个字符是不是同一个键
if(a=='a'||a=='b'||a=='c'){
if(b=='a'||b=='b'||b=='c'){
return 1;
}
return 0;
}else if(a=='d'||a=='e'||a=='f'){
if(b=='d'||b=='e'||b=='f'){
return 1;
}
return 0;
}else if(a=='g'||a=='h'||a=='i'){
if(b=='g'||b=='h'||b=='i'){
return 1;
}
return 0;
}else if(a=='j'||a=='k'||a=='l'){
if(b=='j'||b=='k'||b=='l'){
return 1;
}
return 0;
}else if(a=='m'||a=='n'||a=='o'){
if(b=='m'||b=='n'||b=='o'){
return 1;
}
return 0;
}else if(a=='p'||a=='q'||a=='r'||a=='s'){
if(b=='p'||b=='q'||b=='r'||b=='s'){
return 1;
}
return 0;
}else if(a=='t'||a=='u'||a=='v'){
if(b=='t'||b=='u'||b=='v'){
return 1;
}
return 0;
}else{
if(b=='w'||b=='x'||b=='y'||b=='z'){
return 1;
}
return 0;
}
}
int main()
{
char str[105];
int len = 0;
int ans;
while(scanf("%s",&str)!=EOF){
len = strlen(str);
ans = 0;
ans = judge(str[0]);
for(int i = 1;str[i]!='\0';i++){
if(queryKey(str[i-1],str[i])){
ans += 2;
}
ans += judge(str[i]);
}
printf("%d\n",ans);
}
return 0;
}