手机
题目描述
一般的手机的键盘是这样的:
要按出英文字母就必须要按数字键多下。例如要按出 x
就得按 9 两下,第一下会出 w
,而第二下会把 w
变成 x
。0 键按一下会出一个空格。
你的任务是读取若干句只包含英文小写字母和空格的句子,求出要在手机上打出这个句子至少需要按多少下键盘。
输入格式
一行句子,只包含英文小写字母和空格,且不超过 200 个字符。
输出格式
一行一个整数,表示按键盘的总次数。
样例 #1
样例输入 #1
i have a dream
样例输出 #1
23
提示
NOI 导刊 2010 普及(10)
思路:我们输入字符串,每输入一个字符,我们就判断他是啥,然后我要按几下才能输出他,知道字符串输入完毕,我们就得到了需要按多少下。
该算法个人认为比较优,如果有更好的想法,欢迎q我!
代码如下(编译器是dev,语言是C语言):
#include<stdio.h>
#include<stdbool.h>
char temp;
int sum = 0;
int fangfa(char a){
if(a == ' '){
sum += 1;
}else if((a == 'a')||(a == 'd')||(a == 'g')||(a == 'j')||(a == 'm')||(a == 'p')||(a == 't')||(a == 'w')){
sum += 1;
}else if((a == 'b')||(a == 'e')||(a == 'h')||(a == 'k')||(a == 'n')||(a == 'q')||(a == 'u')||(a == 'x')){
sum += 2;
}else if((a == 'c')||(a == 'f')||(a == 'i')||(a == 'l')||(a == 'o')||(a == 'r')||(a == 'v')||(a == 'y')){
sum += 3;
}else if((a == 's')||(a == 'z')){
sum += 4;
}
return 0;
}
int main(){
while(true){
scanf("%c",&temp);
if(temp == '\n'){
break;
}
fangfa(temp);
}
printf("%d",sum);
return 0;
}