NOIP2010-普及组复赛模拟试题-第一题-手机
生活随笔
收集整理的這篇文章主要介紹了
NOIP2010-普及组复赛模拟试题-第一题-手机
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目背景?Background
現(xiàn)在手機(jī)使用越來(lái)越廣泛了 ?題目描述?Description 一般的手機(jī)的鍵盤(pán)是這樣的:要按出英文字母就必須要按數(shù)字鍵多下。例如要按出 x 就得按 9 兩下,第一下會(huì)出 w,
而第二下會(huì)把 w 變成 x。0 鍵按一下會(huì)出一個(gè)空格。
你的任務(wù)是讀取若干句只包含英文小寫(xiě)字母和空格的句子, 求出要在手機(jī)上打出這個(gè)句
子至少需要按多少下鍵盤(pán)。 ?輸入輸出格式?Input/output 輸入格式:
一行一個(gè)句子,只包含英文小寫(xiě)字母和空格,且不超過(guò) 200 個(gè)字符。 輸出格式:
一行一個(gè)整數(shù),表示按鍵盤(pán)的總次數(shù)。 ?輸入輸出樣例?Sample input/output 樣例測(cè)試點(diǎn)#1
輸入樣例:
i have a dream
輸出樣例:
23
思路:這題較為簡(jiǎn)單,可以先打表,這個(gè)比較快捷(記錄每個(gè)按鍵所要按的次數(shù)),每次只輸入一個(gè)字符,找到在表里面的答案加上計(jì)數(shù)器即可。
注意:輸入數(shù)據(jù)有若干句,一行一句,所以要用文件讀入。
代碼如下:
1 #include <stdio.h> 2 #include <string.h> 3 int ans1[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,1};//打表,統(tǒng)計(jì)每個(gè)按鍵所需的次數(shù) 4 int phone(char a[]) 5 { 6 int ans=0,i; 7 for(i=0;i<strlen(a);i++) 8 { 9 if(a[i]!=' ')//字母 10 { 11 ans+=ans1[a[i]-97];//計(jì)數(shù)器加上表內(nèi)的數(shù)字 12 } 13 else //空格,計(jì)數(shù)器++ 14 { 15 ans+=1; 16 } 17 } 18 return ans; 19 } 20 int main() 21 { 22 char a[201]; 23 gets(a); 24 while(a[strlen(a)-1]!=EOF)//如果還沒(méi)到文件結(jié)尾,傳入函數(shù) 25 { 26 printf("%d\n",phone(a)); 27 gets(a); 28 } 29 return 0; 30 }?
轉(zhuǎn)載于:https://www.cnblogs.com/geek-007/p/4733219.html
總結(jié)
以上是生活随笔為你收集整理的NOIP2010-普及组复赛模拟试题-第一题-手机的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 自己写getElementsByClas
- 下一篇: 如何运维能让网站稳定高效--稳定篇