博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【HDU 2577】How to Type
阅读量:7034 次
发布时间:2019-06-28

本文共 1385 字,大约阅读时间需要 4 分钟。

(我做了这题才知道caps lock 锁定大小写后,按一下shift键可以输入相反的大小写。)

这题就是给你只有大小写字母的字符串,求最少多少次按键盘。最后caps lock 必须是关闭的。

分析

这题可以模拟也可以dp。

代码

模拟

#include
#include
int t,on,i,ans;char s[105];int isU(char a){ return a<='Z'&&a>='A';}int main(){ scanf("%d",&t); while(t--) { memset(s,0,sizeof s); on=i=ans=0;//一开始caps lock关闭 scanf("%s",s); while(s[i])//处理每个字母 { if(isU(s[i])&&!on)//如果是大写且caps lock 关闭了 { ans++;//打开caps lock 或者按一次shift if(isU(s[i+1]))//如果后面紧接着大写就开启caps lock on=1; } if(!isU(s[i])&&on)//同理 { ans++; if(!isU(s[i+1])) on=0; } ans++;//输入当前字母 i++; } if(on)//最后使caps lock 关闭 ans++; printf("%d\n",ans); } return 0;}

 

dp

#include
#include
#include
using namespace std;int t,on,i,ans,n;char s[105];int dp[105][2];int isU(char a){ return a<='Z'&&a>='A';}int main(){ scanf("%d",&t); while(t--) { memset(s,0,sizeof s); memset(dp,0,sizeof dp); on=i=ans=0; scanf("%s",s);//如果s[0]是大写,要关闭状态,那就按shift,再按字母 dp[0][0]=isU(s[0])+1;//小写先按字母再按caps lock,大写先caps lock 再按字母 dp[0][1]=2; n=strlen(s); for(int i=1;i

 

转载地址:http://kknal.baihongyu.com/

你可能感兴趣的文章
cdlinux可以安装在c盘
查看>>
WordPress制作一个首字母排序的标签页面
查看>>
JqueryEasyUI教程入门篇
查看>>
从c++看js的那些概念
查看>>
php获取机器网卡的物理(MAC)地址
查看>>
vim调用python格式化json数据
查看>>
Enum遇到下拉框
查看>>
淘宝运营中的6大致命误区,你犯过么?
查看>>
你知道C#中的Lambda表达式的演化过程吗
查看>>
maven jetty debug 无法关联第三方类库解决办法
查看>>
LNMP环境的安装配置
查看>>
C/C++通过WMI和系统API函数获取获取系统硬件配置信息
查看>>
Saltstack数据系统Grains和Pillar(三)
查看>>
24种设计模式
查看>>
Linux下搭建SVN服务
查看>>
jprofiler_监控远程linux服务器的JVM进程(实践)
查看>>
2016中国APP分类排行榜参选入围产品公示
查看>>
linux 学习之路(学linux必看)
查看>>
mavn项目(springMVC) 引入静态资源(js、css)等
查看>>
webservice异常
查看>>