码迷,mamicode.com
首页 > 移动开发 > 详细

洛谷 P1765 手机_NOI导刊2010普及(10) 题解

时间:2017-09-10 12:26:16      阅读:342      评论:0      收藏:0      [点我收藏+]

标签: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个字符。

输出格式:

一行一个整数,表示按键盘的总次数。

输入输出样例

输入样例#1:
i have a dream
输出样例#1:
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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!