思路:按照按下大小写切换来DP。。
#include<bits\stdc++.h>
using namespace std;
char str[105];
int dp[105][2];
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%s",str+1);
int len = strlen(str+1);
dp[0][0]=0;
dp[0][1]=2;
for (int i = 1;i<=len;i++)
{
if(str[i]>='A' && str[i]<='Z')
{
dp[i][1]=min(dp[i-1][1]+1,dp[i-1][0]+2);
dp[i][0]=min(dp[i-1][1]+2,dp[i-1][0]+2);
}
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);
}
}
int ans = min(dp[len][0],dp[len][1]+1);
printf("%d\n",ans);
}
}