HDU 2577 How to Type 动态规划

友情题目链接?pid=2577

#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int N=110;char str[N];int close[N],open[N];int MIN(int a ,int b){return a=a<b?a:b;}int main(){int T;scanf("%d",&T);while(T–){memset(close,0,sizeof(close));memset(open,0,sizeof(open));//open和close数组分别表示打一个字母时对应CapsLock灯的状态 open[0]=1;scanf("%s",str);int len=strlen(str);for(int i=0;i<len;i++){if(str[i]>='A'&&str[i]<='Z'){//当前为open状态对应上一个字母的open和close两个状态//1.上次为open,当前也为open,直接敲 +1//2.上次为close,当前为open,敲CapsLock->字母 +2open[i+1]=MIN(open[i]+1,close[i]+2);//1.上次为open,当前为close,敲字母 -> CapsLock+2//2.上次为close,当前为close, 敲Shift+字母 +2close[i+1]=MIN(open[i]+2,close[i]+2);}else{//同上!!!open[i+1]=MIN(open[i]+2,close[i]+2);close[i+1]=MIN(open[i]+2,close[i]+1);}}open[len]++;int ans=MIN(open[len],close[len]);printf("%d\n",ans);}return 0; } //版权所有,转载请注明出处,否则追究其法律责任!

版权声明:本文为博主原创文章,未经博主允许不得转载。

,长江后浪催前浪,一辈新人换旧人。

HDU 2577 How to Type 动态规划

相关文章:

你感兴趣的文章:

标签云: