hdu2577 How to Type
来源:互联网 发布:glide加载网络图片 编辑:程序博客网 时间:2024/04/25 00:01
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2577
题解:dp[i][0]存放当前是小写状态,dp[i][1]存放当前是大写的状态。
小写字母可在caps lock不亮时打出,也可在caps lock亮时,按shift打出
大写字母可在caps lock亮时打出,也可在caps lock不亮时,按shift打出
最后要保持关灯状态!!!!
输入小写字母:状态转移方程(分析如下)
dp[i+1][0]=Min(dp[i][0]+1,dp[i][1]+2);//如果输入前一个字母灯是灭的(caps lock关闭),1.只需按所要输入的字母即可;2.按shift+字母
dp[i+1][1]=Min(dp[i][0]+2,dp[i][1]+2);//如果输入前一个字母灯是亮的(caps lock打开),1.按caps lock+字母;2.按shfit+字母
输入大写字母:状态转移方程
dp[i+1][0]=Min(dp[i][0]+2,dp[i][1]+2);//如果输入前一个字母灯是灭的(caps lock关闭), 1.按caps lock+字母;2.按shfit+字母
dp[i+1][1]=Min(dp[i][0]+2,dp[i][1]+1);//如果输入前一个字母灯是亮的(caps lock打开),1.只需按所要输入的字母即可;2.按shfit+字母
#include <stdio.h>#include <string.h>#define MAXN 102int dp[MAXN][2];int Min(int x,int y){return x<y?x:y;}int main(){int n,i,len,ans;char str[MAXN];scanf("%d",&n);while(n--){memset(dp,0,sizeof(dp));scanf("%s",str);len=strlen(str);dp[0][1]=1;//0个字母大写状态一次按键for(i=0;i<len;++i){if(str[i]>='a'&&str[i]<='z'){dp[i+1][0]=Min(dp[i][0]+1,dp[i][1]+2);dp[i+1][1]=Min(dp[i][0]+2,dp[i][1]+2);}else{dp[i+1][0]=Min(dp[i][0]+2,dp[i][1]+2);dp[i+1][1]=Min(dp[i][0]+2,dp[i][1]+1);}}ans=Min(dp[len][0],dp[len][1]+1);//dp[len][1]+1表示turn off caps lock printf("%d\n",ans);}return 0;}
- HDU2577 How to Type
- HDU2577--How to Type
- hdu2577 How to Type
- HDU2577--How to Type
- hdu2577 how to type
- HDU2577 How to Type
- HDU2577 How to Type
- HDU2577 How to Type
- HDU2577 How to Type
- HDU2577:How to Type(DP)
- HDU2577 How to Type【DP】
- HDU2577 How to Type (DP)
- hdu2577 How to Type---DP
- hdu2577 特殊动归 How to Type
- hdu2577——How to Type
- hdu2577 How to Type(经典DP)
- hdu2577 How to Type(DP)
- HDU2577 How to Type (动态规划)
- hdu Matrix 2119 二分图匹配
- linux内核内存管理学习之二(物理内存管理--伙伴系统)
- 集合ArrayList
- 12-Oracle学习_索引-视图-序列-三范式
- main函数中的参数argv与argv[ ]的探讨
- hdu2577 How to Type
- LinearLayout均分的分割线配置方式
- 22.从零开始学习C语言--链表
- FTP网络通信程序设计
- 关于box2d的缩放问题
- 【HDOJ】1097 -> A hard puzzle
- HDU 2222 Keywords Search (AC自动机)
- hdu3695(AC自动机)
- 苏州交通局长坐非空调公交满脸汗 决定提前换车