标签:pid cst problem getch 整数 print 描述 空格 har
此文为博主原创题解,转载时请通知博主,并把原文链接放在正文醒目位置。
题目链接:https://www.luogu.org/problem/show?pid=1765
一般的手机的键盘是这样的:
1 2 abc 3 def
4 ghi 5 jkl 6 mno
7 pqrs 8 tuv 9 wxyz
* 0 #
要按出英文字母就必须要按数字键多下。例如要按出x就得按9两下,第一下会出w,而第二下会把w变成x。0键按一下会出一个空格。
你的任务是读取若干句只包含英文小写字母和空格的句子,求出要在手机上打出这个句子至少需要按多少下键盘。
一行一个句子,只包含英文小写字母和空格,且不超过200个字符。
输出格式:一行一个整数,表示按键盘的总次数。
i have a dream
23
_NOI导刊2010普及(10)
分析:
这题非常水...只是读入的时候用了cin.getline(),之前从来没用过。
cin.getline(字符串名称,最大可能长度,结束符);
其中结束符如果不特别指定,默认为‘\n‘,也就是换行符。这样就可以自由读入空格,或者实现其他读入要求。
AC代码:
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 6 using namespace std; 7 8 inline void read(int &x) 9 { 10 x = 0;char ch = getchar(), c = ch; 11 while(ch < ‘0‘ || ch > ‘9‘)c = ch, ch = getchar(); 12 while(ch <= ‘9‘ && ch >= ‘0‘)x = (x<<1)+(x<<3)+ch - ‘0‘, ch = getchar(); 13 if(c == ‘-‘)x = -x; 14 } 15 16 int cnt[30] = {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}; 17 //数组的正确使用(误) 18 char line[1005]; 19 20 int main() 21 { 22 int ans = 0; 23 cin.getline(line,1000,‘\n‘); 24 int len = strlen(line); 25 for(int i = 0;i < len;++ i) 26 { 27 if(line[i] >= ‘a‘ && line[i] <= ‘z‘) 28 ans += cnt[line[i]-‘a‘]; 29 else if(line[i] == ‘ ‘) 30 ans += 1; 31 } 32 printf("%d\n",ans); 33 return 0; 34 }
洛谷 P1765 手机_NOI导刊2010普及(10) 题解
标签:pid cst problem getch 整数 print 描述 空格 har
原文地址:http://www.cnblogs.com/shingen/p/7500475.html