HDOJ 2577

思路:openclock[i]记录到i位置打开大写键时的最小按键次数,closeclock[i]记录到i位置时不打开大写键时最小按键次数,详见代码。


#include<ctype.h>
#include<iostream>
#include<cstring>
#include<cstdio>
#define MAX 111
using namespace std;
int closeclock[MAX], openclock[MAX];
char str[MAX];
int main(){
    int c, len;
    /* freopen("in.c", "r", stdin); */
    scanf("%d", &c);
    while(c--){
        memset(str, 0, sizeof(str));
        scanf("%s", str);
        len = strlen(str);
        openclock[0] = 1;
        for(int i = len;i > 0;i --) str[i] = str[i-1];
        for(int i = 1;i <= len;i ++){
            if(islower(str[i])){
                openclock[i] = min(openclock[i-1]+2, closeclock[i-1]+2);
                closeclock[i] = min(openclock[i-1]+2, closeclock[i-1]+1);
            }else{
                openclock[i] = min(openclock[i-1]+1, closeclock[i-1]+2);
                closeclock[i] = min(openclock[i-1]+2, closeclock[i-1]+2);
            }
        }
        openclock[len]++;
        printf("%d\n", min(openclock[len], closeclock[len]));
    }
    return 0;
}


posted on 2014-04-30 18:38  wangzhili  阅读(106)  评论(0)    收藏  举报