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;
}
浙公网安备 33010602011771号