andre_joy

导航

hdu 2577

地址:http://acm.hdu.edu.cn/showproblem.php?pid=2577

题意:求字符串最少输入次数。

mark:dp,关键是分组!

代码:

#include <stdio.h>
#include <string.h>

int min(int a, int b) {return a < b ? a : b;}

int dp[110][2];

int main()
{
    int t,i;
    char a[110];
    scanf("%d", &t);
    while(t--)
    {
        scanf("%s", a);
        memset(dp, 0, sizeof(dp));
        if(a[0] < 'a') dp[0][0] = dp[0][1] = 2;
        else dp[0][0] = 1, dp[0][1] = 2;
        for(i = 1 ; a[i]; i++)
        {
            if(a[i] < 'a')
            {
                dp[i][0] = min(dp[i-1][0]+2, dp[i-1][1]+2);
                dp[i][1] = min(dp[i-1][0]+2, dp[i-1][1]+1);
            }
            else
            {
                dp[i][0] = min(dp[i-1][0]+1, dp[i-1][1]+2);
                dp[i][1] = min(dp[i-1][0]+2, dp[i-1][1]+2);
            }
        }
        printf("%d\n", min(dp[i-1][0], dp[i-1][1]+1));
    }
    return 0;
}

posted on 2012-07-23 18:07  andre_joy  阅读(153)  评论(0编辑  收藏  举报