CDOJ--1056
原题链接:http://acm.uestc.edu.cn/problem.php?pid=1056
题目:大小写切换
分析:以前这种问题我都是用dp写的,最近学到了一种更简洁的方法,特此记录下来!
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 #include<algorithm> 6 #include<vector> 7 #include<queue> 8 using namespace std; 9 #define maxn 2000005 10 #define LL long long 11 int T,n; 12 char s[220]; 13 int main() 14 { 15 scanf("%d",&T); 16 while(T--) 17 { 18 scanf("%s",s); 19 n=strlen(s); 20 bool flag[220]={0}; 21 int t=0,ans=0; 22 for(int i=0;i<n;i++) 23 if(s[i]<='Z')flag[i+1]=1; 24 else flag[i+1]=0; 25 for(int i=1;i<=n;i++) 26 { 27 if(t==flag[i])ans++; 28 else 29 { 30 ans+=2; 31 if(!(flag[i]^flag[i+1])) 32 t=!t; 33 } 34 } 35 printf("%d\n",ans); 36 } 37 return 0; 38 }