一般的手机的键盘是这样的:
要按出英文字母就必须要按数字键多下。例如要按出 x
就得按 9 两下,第一下会出 w
,而第二下会 把 w
变成 x
。0 键按一下会出一个空格。
你的任务是读取若干句只包含英文小写字母和空格的句子,求出要在手机上打出这个句子至少需要按多少下键盘。
我们用“暴力枚举法”来解决。
代码如下:
#include<stdio.h>
int main()
{
char str[201];
int i,n=0;
gets(str);
for(i=0;str[i]!='\0';i++) //当检测到字符串结尾的‘\0’时,循环结束
{
if(str[i]==97||str[i]==100||str[i]==103||str[i]==106||str[i]==109||str[i]==112||str[i]==116||str[i]==119||str[i]==' ')
n+=1;
else if(str[i]==98||str[i]==101||str[i]==104||str[i]==107||str[i]==110||str[i]==113||str[i]==117||str[i]==120)
n+=2;
else if(str[i]==99||str[i]==102||str[i]==105||str[i]==108||str[i]==111||str[i]==114||str[i]==118||str[i]==121)
n+=3;
else if(str[i]==115||str[i]==122)
n+=4;
}
printf("%d",n);
return 0;
}
通过小写字母和空格对应的数字来进行枚举,分别找到在手机按键里按一次出现的字母,接着找按两次出现的字母,以此类推,便可以完成枚举。
运行结果如下:
i have a dream
23