这题考虑的不是很到位。导致比赛的时候错。。对于问题的考虑不够全面。哎。。就是少了一个=符号。。坑爹啊。。。
#include <vector> #include <list> #include <map> #include <set> #include <deque> #include <stack> #include <bitset> #include <algorithm> #include <functional> #include <numeric> #include <utility> #include <sstream> #include <iostream> #include <iomanip> #include <cstdio> #include <cmath> #include <cstdlib> #include <ctime> #include <string> #include <cstring> using namespace std; stack<char> s; int main() { string colors; while(1) { //cin>>colors; int sum=0; while(!s.empty())s.pop(); int len=colors.length(); for(int i=0;i<len;i++) { if(s.empty()) {s.push(colors[i]);continue;} if(s.top()==colors[i]) {s.pop();sum++;} else s.push(colors[i]); } int ans=s.size(); char topcolor=0; char endcolor=0; if(ans>0) { topcolor=s.top(); endcolor=s.top(); while(!s.empty()) { endcolor=s.top(); s.pop(); } } int tog=ans/2; tog--; if(tog>0)sum+=tog; if(topcolor==endcolor && tog>=0)sum++; //cout<< sum<<endl; } }