hdu2577 dp
也可以字符串搞。dp思路还是很清晰的。dp[][0]表示未锁定,dp[][1]表示锁定键。
#include<stdio.h> #include<string.h> #define maxn 110 char s[maxn]; int min(int x,int y) { return x<y?x:y; } int main() { int dp[maxn][3];//dp[][0]表示未锁定 dp[][1]表示锁定 int i,j,t; scanf("%d",&t); while(t--) { scanf("%s",s); int len=strlen(s); for(i=len;i>0;i--) s[i]=s[i-1]; memset(dp,0,sizeof(dp)); dp[0][1]=1; for(i=1;i<=len;i++) { if(s[i]>='A'&&s[i]<='Z')// { dp[i][1]=min(dp[i-1][0]+2,dp[i-1][1]+1); dp[i][0]=min(dp[i-1][0]+2,dp[i-1][1]+2); } else { dp[i][1]=min(dp[i-1][1]+2,dp[i-1][0]+2); dp[i][0]=min(dp[i-1][0]+1,dp[i-1][1]+2); } } int ans=min(dp[len][0],dp[len][1]+1); printf("%d\n",ans); } }