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);
    }
}

 

posted @ 2015-08-21 10:20  sweat123  阅读(222)  评论(0编辑  收藏  举报