手 机 手机 手机
题目链接:jzoj 1983
题目大意
手机上有很多按键(如上图),每个位置按几次就是该位置的第几个字母。
我们读取一个只含英文小写字母和空格的句子,求最少要按多少次才打得出来。
样例输入
i have a dream
样例输出
23
数据范围
不超过 200 个字符。
思路
这道题就是模拟。
我们先算出每个小写字母或空格打出来至少要按多少次。然后读入句子,一一对应加起来,加起来的结果就是最终的答案。
代码
#include<cstdio>
using namespace std;
int a[27]={1,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},ans;//枚举每个小写字母和空格要按多少次
char c;
int main()
{
freopen("mobile.in","r",stdin);
freopen("mobile.out","w",stdout);
c=getchar();//读入
while (c!='\n')
{
if (c==' ') ans+=a[0];//是空格
else ans+=a[c-96];//是小写字母(对应)
c=getchar();//读入
}
printf("%d",ans);//输出
fclose(stdin);
fclose(stdout);
return 0;
}