HDU-2577-How to Type
HDU-2577-How to Type
http://acm.hdu.edu.cn/showproblem.php?pid=2577
很有趣的一题,给一组字符串,问最少按几次键盘可以打完
小写字母可在capslock不亮时打出,也可在capslock亮时,按shift打出
大写字母可在capslock亮时打出,也可在capslock不亮时,按shift打出
用两个数组,逐步计算每一字母的最小次数即可
#include<stdio.h> #include<string.h> #include<stdlib.h> char str[105]; int on[105]; //caps lock亮 int off[105]; //caps lock不亮 int min(int x,int y) { return x<y?x:y; } int main() { int i,t,len; scanf("%d",&t); while(t--) { scanf("%s",str); on[0]=1; //初始开灯 off[0]=0; len=strlen(str); for(i=0;i<len;i++) { if('a'<=str[i]&&str[i]<='z') { on[i+1]=min(on[i]+2,off[i]+2); off[i+1]=min(on[i]+2,off[i]+1); } else { on[i+1]=min(on[i]+1,off[i]+2); off[i+1]=min(on[i]+2,off[i]+2); } } on[len]++; //最后将灯关了 printf("%d\n",min(on[len],off[len])); } return 0; }
posted on 2012-07-14 23:19 java课程设计例子 阅读(153) 评论(0) 编辑 收藏 举报