手机键盘 (模拟)

题目描述

按照手机键盘输入字母的方式,计算所花费的时间 如:a,b,c都在“1”键上,输入a只需要按一次,输入c需要连续按三次。 如果连续两个字符不在同一个按键上,则可直接按,如:ad需要按两下,kz需要按6下 如果连续两字符在同一个按键上,则两个按键之间需要等一段时间,如ac,在按了a之后,需要等一会儿才能按c。 现在假设每按一次需要花费一个时间段,等待时间需要花费两个时间段。 现在给出一串字符,需要计算出它所需要花费的时间。

输入描述:

一个长度不大于100的字符串,其中只有手机按键上有的小写字母

输出描述:

输入可能包括多组数据,对于每组数据,输出按出Input所给字符串所需要的时间

示例1

输入

bob
www

输出

7
7

来源:清华大学研究生复试试题

分析:一开始这个题有个小坑,题目所说的手机键盘就是日常所见的九宫格键盘。不过如果不注意细节的话我们很可能认为每个键只包括三个字母,但实际键盘是这样的,如图

                              

这也是为什么题意中说kz需要按6下,因为按Z时需要按4下。

注意到这个细节之后进行模拟就行了,题目的测试数据给的比较水,运用暴力是不会超时的

#include<stdio.h>
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(h<27&&h>22)  return 8;
    else if(h>19&&h<23) t=7;
    else if(h>15&&h<20) t=6;
    else if(h>12&&h<16) t=5;
    else if(h>9&&h<13)  t=4;
    else if(h>6&&h<10)  t=3;
    else if(h>3&&h<7)   t=2;
    else    t=1;
    return t;
}
int main()
{
    while(scanf("%s",a)!=EOF)
    {
        n=0,sum=0;
        while(a[n])    n++;
        sum+=table1[a[0]-96];//首字母前没有字母,不考虑等待时间,直接算按键时间
        for(i=1;i<n;i++)
        {
            s1=a[i]-96;
            s1=test(s1);//辨别当前字母所在的键
            s2=a[i-1]-96;
            s2=test(s2);//辨别前一个字母所在的键
            if(s1==s2)sum+=2;//如果两个所在的键相同,要加上等待时间
            sum+=table1[a[i]-96];//加上当前字母按键时间
        }
        printf("%d\n",sum);//输出所需要的总时间
    }
}

 

【软件功能】 蓝牙遥控器软件,可以将你的手机变成一部电脑遥控器,使用手机可以控制电脑的鼠标操作、键盘的输入,如果你的手机具有手写功能,还可以将你的手机变成手写板。 这个软件分为两部分,一个是安装到手机上,另一个安装在电脑上。 手机端: 软件文件名为BtRemoteControl.jar,它要求安装的手机具有java功能,并支持MIDP2.0,具有蓝牙功能。 电脑端: 要想在电脑上运行遥控器,要求安装蓝牙驱动程序widcomm驱动或IVT BlueSoleil驱动。 同时,还要求电脑上安装.net运行库2.0,如果你的电脑没有安装,必须先安装Microsoft .NET Framework 2.0 。 【使用说明】 电脑端的安装使用: 蓝牙遥控器电脑端在电脑上安装后,双击图标桌面上产生的图标。 首先在“请选择接受遥控的蓝牙虚拟串口”后面,选择蓝牙的虚拟串口名字,软件里已经包括了从com1到com20的串口名字,请根据自己机器上的蓝牙虚拟串口名字选择,如果你无法确定,可以用手机上的蓝牙遥控器软件测试1下。 选择好串口名字后,点下“打开串口”按钮,将显示“蓝牙串口状态:"已打开,这时就可以接受手机方的控制了。 手机端的安装使用: 和其它的JAVA程序在手机上的安装过程一样,先用蓝牙、红外线或数据线将手机与电脑连接,将BtRemoteControl.jar安装到手机,在手机的功能表里就会出现“蓝牙遥控器”标志,运行软件,会出现“启动蓝牙”选择,运行该选择,软件将搜索周围准备接受遥控的电脑上的蓝牙设备,搜索片刻后,将显示搜到蓝牙设备,并接着显示蓝牙设备上的蓝牙虚拟串口服务是否存在。 如果搜索后显示未找到蓝牙设备,请检查你的手机是否启动了蓝牙,你的电脑上的蓝牙驱动程序是否启动,蓝牙设备是否插好。 在找到蓝牙设备和蓝牙上的虚拟串口后,手机上将会有如下3个菜单选择: 发送测试:用来测试电脑上的蓝牙虚拟串口是否可以接受数据,同时可以测试出蓝牙虚拟串口的名字,供电脑方的遥控软件设置使用,按下这个按钮,就可以向电脑的虚拟串口发送1个数据,测试串口。 控制鼠标和键盘:选择了这个菜单,将显示遥控鼠标、键盘界面.这个选择有3个功能,用户可以按下#号键,在这三个功能之间切换,这三个功能: 1、遥控鼠标。手机方向键的上下左右四个键,控制鼠标上下左右移动,按下0键,遥控单击鼠标右键,按下9键,遥控单击鼠标左键,按下ok键,遥控双击鼠标左键。按下1,3,7个键,调整鼠标移动的距离,1键是短距离,3键是中距离,7键是长距离。 2、遥控鼠标自动移动。按下上下左右四个方向键,鼠标将按照操作自动上下左右移动,一直到屏幕的边缘才停止,按下*号键,停止自动运行。 3、遥控键盘。按下手机上的0到9号键,将向电脑发送命令0到9,在电脑上,可以进行设置,当接到命令时如何控制键盘。电脑端的操作如下图,选择接到命令时,要按下的按键,点“添加”按钮,就可以添加成功,选择后,殿下“删除”按钮,就可以删除: 文字输入:按下这个菜单,将可以输入文字到电脑。在手机中输入文字,然后点下“发送文字”按钮,就可以将文字发送到电脑了。
手机做键鼠,for Android 1. 解压「无线手写板鼠标」压缩包,安装其中的手机端软件“无线手写板鼠标.apk”到Android手机; 2. 电脑端软件“无线手写板鼠标.exe”无需安装,直接双击运行即可(若无法运行,请下载并安装“.NET Framework 2.0 组件包”); 使用Wi-Fi连接: 1. 确认手机和电脑都连接到的是同一个Wi-Fi网络,建议使用「豌豆荚手机精灵」或「91手机助手」来测试连接是否正常; 2. 启动「无线手写板鼠标」手机端和电脑端软件; 3. 把手机端软件上显示的手机IP地址输入到电脑端软件,并点击“连接到手机”按钮,连接成功后电脑端软件会自动最小化; 使用USB连接: 1. 安装手机相应的驱动程序,建议使用「豌豆荚手机精灵」或「91手机助手」来协助您安装并测试连接是否正常; 2. 打开手机上的“设置->应用程序->开发->USB调试”开关,并用USB数据线把手机连接至电脑; 3. 启动「无线手写板鼠标」手机端和电脑端软件; 4. 点击「无线手写板鼠标」电脑端软件上方的“连接到手机”按钮,连接成功后电脑端软件会自动最小化; 连接成功后: 1. 可触摸手机屏幕来控制电脑上的鼠标; 2. 可激活电脑上任意程序的编辑框,然后在手机端软件下方编辑框中手写或语音输入想要的内容,此时输入的文字会自动同步发送到电脑; 3. 可利用电脑来为手机输入文字,单击电脑端软件上的“更多”按钮,然后在编辑框中输入文字并点击“发送到手机”,此时手机即可任意粘贴接收到的文字。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值