#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <stack> #include <vector> using namespace std; struct st { char ch[3]; }; bool judge(st c,st d) { if(c.ch[0]==d.ch[0]||c.ch[1]==d.ch[1]) return true; return false; } int main() { vector<stack<st> >piles; st s1; int cur=0; while(cin>>s1.ch) { if(s1.ch[0]=='#') break; cur++; stack<st>s; s.push(s1); piles.push_back(s); if(cur==52) { int n=52; while(true) { int i; for(i=1;i!=piles.size();i++) { if(i>2&&judge(piles[i].top(),piles[i-3].top())) { piles[i-3].push(piles[i].top()); piles[i].pop(); break; } if(i>0&&judge(piles[i].top(),piles[i-1].top())) { piles[i-1].push(piles[i].top()); piles[i].pop(); break; } } if(i==piles.size()) break; else if(piles[i].empty()) { piles.erase(piles.begin()+i); } } n=piles.size(); if(n==1) cout<<n<<" pile remaining: "; else cout<<n<<" piles remaining: "; cout<<piles[0].size(); for(int i=1;i<n;i++) cout<<" "<<piles[i].size(); cout<<endl; piles.clear(); cur=0; } } return 0; }
uva_127,栈以及vector的应用
参考自http://www.cnblogs.com/maqiang/archive/2012/05/02/2479760.html