热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【基础训练查表+map】SMSTyping

Inthisproblemwewillassumethatthekeypadofourcellphoneisarrangedasfollows.Intheabovegrideach

In this problem we will assume that the key pad of our cell phone is arranged as follows.


  In the above grid each cell represents one key. Here means a space. In order to type the letter‘a’, we must press that key once, however to type ‘b’ the same key must be repeatedly pressed twiceand for ‘c’ three times. In the same manner, one key press for ‘d’, two for ‘e’ and three for ‘f’. This isalso applicable for the remaining keys and letters. Note that it takes a single press to type a space.

Input

The first line of input will be a positive integer T where T denotes the number of test cases. T lineswill then follow each containing only spaces and lower case letters. Each line will contain at least 1 andat most 100 characters.

Output

For every case of input there will be one line of output. It will first contain the case number followedby the number of key presses required to type the message of that case. Look at the sample output forexact formatting.

Sample Input

2

welcome to ulab

good luck and have fun

Sample Output

Case #1: 29

Case #2: 41


问题链接:UVA11530 SMS Typing

问题简述:(略)

问题分析:(略)

程序说明:

  这个问题直接模拟实现。

  功能手机键盘的各个字母按键次数是固定,使用map来存储各个字符的按键次数是一种比较简单的做法。

  然而用数组来存储各个字符的按键次数,效率更高。

题记:离散表通常用map来实现,连续的表则用数组来实现,效率很重要。

参考链接:(略)


AC的C语言程序如下:

[cpp] view plaincopy
  1. /* UVA11530 SMS Typing */  
  2.   
  3. #include   
  4. #include   
  5.   
  6. #define N 100  
  7. char s[N + 1];  
  8.   
  9. int m[] = {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};  
  10.   
  11. int main(void)  
  12. {  
  13.     int t, caseno=0, sum;  
  14.   
  15.     scanf("%d", &t);  
  16.     getchar();  
  17.     while(t--) {  
  18.         gets(s);  
  19.   
  20.         sum = 0;  
  21.         for(int i=0; s[i]; i++)  
  22.             if(islower(s[i]))  
  23.                 sum += m[s[i] - 'a'];  
  24.             else if(s[i] == ' ')  
  25.                 sum += 1;  
  26.   
  27.         printf("Case #%d: %d\n", ++caseno, sum);  
  28.     }  
  29.   
  30.     return 0;  
  31. }  




 

AC的C++语言程序如下:

[cpp] view plaincopy
  1. /* UVA11530 SMS Typing */  
  2.   
  3. #include   
  4. #include   
  5. #include   
  6.   
  7. using namespace std;  
  8.   
  9. const int N = 100;  
  10. char s[N + 1];  
  11.   
  12. map <charint> m;  
  13.   
  14. int main()  
  15. {  
  16.     int t, caseno&#61;0, sum;  
  17.   
  18.     m[&#39;a&#39;] &#61; m[&#39;d&#39;] &#61; m[&#39;g&#39;] &#61; m[&#39;j&#39;] &#61; m[&#39;m&#39;] &#61; m[&#39;p&#39;] &#61; m[&#39;t&#39;] &#61; m[&#39;w&#39;] &#61; m[&#39; &#39;] &#61; 1;  
  19.     m[&#39;b&#39;] &#61; m[&#39;e&#39;] &#61; m[&#39;h&#39;] &#61; m[&#39;k&#39;] &#61; m[&#39;n&#39;] &#61; m[&#39;q&#39;] &#61; m[&#39;u&#39;] &#61; m[&#39;x&#39;] &#61; 2;  
  20.     m[&#39;c&#39;] &#61; m[&#39;f&#39;] &#61; m[&#39;i&#39;] &#61; m[&#39;l&#39;] &#61; m[&#39;o&#39;] &#61; m[&#39;r&#39;] &#61; m[&#39;v&#39;] &#61; m[&#39;y&#39;] &#61; 3;  
  21.     m[&#39;s&#39;] &#61; m[&#39;z&#39;] &#61; 4;  
  22.   
  23.     scanf("%d", &t);  
  24.     getchar();  
  25.     while(t--) {  
  26.         gets(s);  
  27.   
  28.         sum &#61; 0;  
  29.         for(int i&#61;0; s[i]; i&#43;&#43;)  
  30.             sum &#43;&#61; m[s[i]];  
  31.   
  32.         printf("Case #%d: %d\n", &#43;&#43;caseno, sum);  
  33.     }  
  34.   
  35.     return 0;  
  1. }  




学到的点&#xff1a;
①借数组用查表法是应该熟稔于心的。
②map的定义和使用。


推荐阅读
  • 本文讨论了如何使用IF函数从基于有限输入列表的有限输出列表中获取输出,并提出了是否有更快/更有效的执行代码的方法。作者希望了解是否有办法缩短代码,并从自我开发的角度来看是否有更好的方法。提供的代码可以按原样工作,但作者想知道是否有更好的方法来执行这样的任务。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文介绍了游标的使用方法,并以一个水果供应商数据库为例进行了说明。首先创建了一个名为fruits的表,包含了水果的id、供应商id、名称和价格等字段。然后使用游标查询了水果的名称和价格,并将结果输出。最后对游标进行了关闭操作。通过本文可以了解到游标在数据库操作中的应用。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 本文介绍了一个题目的解法,通过二分答案来解决问题,但困难在于如何进行检查。文章提供了一种逃逸方式,通过移动最慢的宿管来锁门时跑到更居中的位置,从而使所有合格的寝室都居中。文章还提到可以分开判断两边的情况,并使用前缀和的方式来求出在任意时刻能够到达宿管即将锁门的寝室的人数。最后,文章提到可以改成O(n)的直接枚举来解决问题。 ... [详细]
  • Ihavethefollowingonhtml我在html上有以下内容<html><head><scriptsrc..3003_Tes ... [详细]
  • 欢乐的票圈重构之旅——RecyclerView的头尾布局增加
    项目重构的Git地址:https:github.comrazerdpFriendCircletreemain-dev项目同步更新的文集:http:www.jianshu.comno ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
author-avatar
a_2502881181
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有