标签:
题意:要求一个字符串输入,按键盘的最少次数。有Caps Lock和Shift两种转换大小写输入的方式
思路:用dpa与dpb数组分别记录Caps Lock的开关状态,dpa表示不开,dpb表示开
代码:
#include <stdio.h> #include <string.h> #include <algorithm> using namespace std; char str[111]; int dpa[111],dpb[111]; int main() { int t,i,len,flag; scanf("%d",&t); while(t--) { scanf("%s",str+1); dpa[0] = 0; dpb[0] = 1; for(i = 1; str[i]; i++) { if(str[i]>=‘a‘&&str[i]<=‘z‘) { dpa[i]=min(dpa[i-1]+1,dpb[i-1]+2);//1.灯不亮,直接按字母2.灯亮,关灯,再按字母 dpb[i]=min(dpa[i-1]+2,dpb[i-1]+2);//1.灯不亮,按下字母后,还要开灯2.灯亮,按shift+字母 } else if(str[i]>=‘A‘&&str[i]<=‘Z‘) { dpa[i]=min(dpa[i-1]+2,dpb[i-1]+2); dpb[i]=min(dpa[i-1]+2,dpb[i-1]+1); } } printf("%d\n",min(dpb[i-1]+1,dpa[i-1]));//最后要关灯,dpb要+1 } return 0; }
标签:
原文地址:http://www.cnblogs.com/dj3839/p/4928787.html