uva 170

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Dzy929076300/article/details/52753134

#include<iostream>

#include<queue>

#include<algorithm>

#include<map>

#include<string.h>

#include<math.h>

#include<stdio.h>

#include <iomanip>

#include <stack>

////////


using namespace std;


struct card{

    char No;

    char suit;

};


stack<card>pile[13];


int find(char no);


int main()

{

    card card_piece[52];

    card current;

    string str;

    int num,i,j;

    int current_pile;

    while (cin>>str && str[0]!='#')

    {

        current_pile = 12;

        num = 0;

        ///////输入卡牌内容


        card_piece[0].No = str[0];

        card_piece[0].suit= str[1];

        for(i=1;i<52;i++)

        {

            cin>>str;

            card_piece[i].No = str[0];

            card_piece[i].suit = str[1];

        }

        /////////分堆

        

        for(i=0;i<13;i++)

        {

            while(!pile[i].empty())

                pile[i].pop();

        }

        for(i=51;i>=0;i--)

            pile[12-(i%13)].push(card_piece[i]);

        /////////翻转

        

        while(!pile[current_pile].empty())

        {

            current = pile[current_pile].top();

            pile[current_pile].pop();

            current_pile = find(current.No);

            num++;

        }

        ////////输出

        

        printf("%02d,%c%c\n",num,current.No,current.suit);

    }

}



int find(char no)

{

    if( no == 'A' ) return 0;

    if(no>='2' && no<='9')

        return no-'0'-1;

    if( no == 'T' ) return 9;

    if( no == 'J' ) return 10;

    if( no == 'Q' ) return 11;

    else return 12;

}


阅读更多
换一批

没有更多推荐了,返回首页