转自: http://www.cnblogs.com/mengxm-lincf/archive/2011/06/07/2074489.html
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;
int main()
{
int t,i,j;
int step[105][2];
char ch[105];
scanf("%d",&t);
getchar();
while(t--)
{
scanf("%s",ch);
int m=strlen(ch);
memset(step,0,sizeof(step));
step[0][1]=1;
for(i=0;i<m;i++)
{
if(ch[i]>='a' && ch[i]<='z')
{
step[i+1][0]=min(step[i][0]+1,step[i][1]+2);
step[i+1][1]=min(step[i][0]+2,step[i][1]+2);
}
else
{
step[i+1][0]=min(step[i][0]+2,step[i][1]+2);
step[i+1][1]=min(step[i][0]+2,step[i][1]+1);
}
}
printf("%d\n",min(step[m][0],step[m][1]+1));
}
return 0;
}