uva_127,栈以及vector的应用

参考自http://www.cnblogs.com/maqiang/archive/2012/05/02/2479760.html
#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;
}

原文地址:https://www.cnblogs.com/vactor/p/4099992.html