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