http://acm.hdu.edu.cn/showproblem.php?pid=2577
大小写打字,注意shift的使用,注意初始化
View Code
#include <iostream> using namespace std ; int dp[101][3] ; int main() { int t ; scanf("%d",&t) ; while(t--) { char s[101] ; scanf("%s",s+1) ; int len=strlen(s+1) ; memset(dp,0,sizeof(dp)) ; dp[0][1]=1 ; for(int i=1;i<=len;i++) { if(s[i]>='a' && s[i]<='z') { 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) ; } else { 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) ; } } int ans=min(dp[len][0],dp[len][1]+1) ; printf("%d\n",ans) ; } return 0 ; }