手机键盘 (模拟) | 您所在的位置:网站首页 › 手机虚拟键盘按键a › 手机键盘 (模拟) |
题目描述
按照手机键盘输入字母的方式,计算所花费的时间 如:a,b,c都在“1”键上,输入a只需要按一次,输入c需要连续按三次。 如果连续两个字符不在同一个按键上,则可直接按,如:ad需要按两下,kz需要按6下 如果连续两字符在同一个按键上,则两个按键之间需要等一段时间,如ac,在按了a之后,需要等一会儿才能按c。 现在假设每按一次需要花费一个时间段,等待时间需要花费两个时间段。 现在给出一串字符,需要计算出它所需要花费的时间。 输入描述: 一个长度不大于100的字符串,其中只有手机按键上有的小写字母 输出描述: 输入可能包括多组数据,对于每组数据,输出按出Input所给字符串所需要的时间示例1 输入 bob www 输出 7 7来源:清华大学研究生复试试题 分析:一开始这个题有个小坑,题目所说的手机键盘就是日常所见的九宫格键盘。不过如果不注意细节的话我们很可能认为每个键只包括三个字母,但实际键盘是这样的,如图 这也是为什么题意中说kz需要按6下,因为按Z时需要按4下。 注意到这个细节之后进行模拟就行了,题目的测试数据给的比较水,运用暴力是不会超时的 #include const int M1=27,M2=1e2+5; int table1[M1]={0,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}; int i,j,k,n,m,sum,s1,s2;//上面的table表用于存取每个字母需要按的次数 char a[M2]; int test(int h)//test函数用于辨别每个字母所在的键 { int t; if(h22) return 8; else if(h>19&&h15&&h12&&h9&&h6&&h3&&h |
CopyRight 2018-2019 实验室设备网 版权所有 |