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 }
View Code

 

posted @ 2013-12-12 23:29  EtheGreat  阅读(180)  评论(0编辑  收藏  举报