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