【栈/CF534B】Game with string

http://codeforces.com/contest/1104/problem/B

题意:
给定一串小写字母序列,每次取连着的两个相同字母,直到无法取为止

 

用栈来做。

由于必须取连着的两个,所以依次进栈,遇到和栈顶相同的就弹出,同时把取的次数+1

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+233;
char ss[maxn];
stack<int> prs;
int cond=0;
int main()
{
    scanf("%s",ss);
    int len=strlen(ss);
    prs.push(ss[0]);
    for(int i=1;i<len;i++)
    {
        if(!prs.empty()&&prs.top()==ss[i])
        {
            prs.pop();
            cond++;
        }
        else
        {
            prs.push(ss[i]);
        }   
    }
    printf("%s",(cond%2==1)?"Yes":"No");
}

 … Read the rest