1038-纸牌游戏

版权声明:欢迎转载!拒绝抄袭. https://blog.csdn.net/qq_36257146/article/details/88353694

题目描述:

Acm队的四个大神坐在一起玩纸牌。

大家都知道,每轮纸牌游戏结束之后,都需要重新洗牌,拿牌,然后整理手中的牌。而每次都单纯的如此循环很是枯燥,严重的消磨了玩纸牌的积极性。

现在是一个信息爆炸的时代,科技发展迅猛,所以4个大神就希望看看能够写出一个程序,来完成这些步骤。而身为acm队的大神,手上有一定的特权,就是面对一些琐事,可以交给手下的小弟来完成,。

现在,你的机会来了,洗牌没有任何技术含量,包含了强大的随机性,而你的任务,就是写一个程序来完成4个人的摸排和整理手牌的任务。

Acm队的大神说过,AC就像爱情,来的那么突然,让你惊讶,并且欣喜若狂。

尽情的来吧~~~~!!!

 

Ps:具体细节看样例输入输出。

输入描述:

<span style="color:#000000">多组测试数据;
第一行一个字母(N,S,W,E,分别代表第一张牌由谁来拿)。
之后按东、南、西、北顺时针的顺序拿牌。
第二行表示第一摞牌(26张),
第三行表示第二摞牌(26张);
每张牌由两个字符组成,第一个字符表示牌面大小(A,2~9,T,J,Q,K),第二个字符表示纸牌的花色(C,D,S,H,四种花色)</span>

输出描述:

<span style="color:#000000">按东(East player),南(South player),西(West player),北(North player),四个方向的顺序输出四个人已经整理好的手牌;
每组样例间输出一个空行。</span>

样例输入:

复制

S
4DQH3C2CJSTC2H4C7STS3SJH9CKC9SKD6S5SAS3DAH8SAC7D4S4H
QC6CJDQD7H8D5DQS6D9D3HJC8C2D2S5C9HAD7CKS6H8HKHTDTH5H

样例输出:

East player:
+---++---++---++---++---++---++---++---++---++---++---++---++---+
|2 2||4 4||6 6||2 2||3 3||7 7||8 8||9 9||K K||A A||5 5||8 8||J J|
| C || C || C || D || D || D || D || D || D || D || H || H || H |
|2 2||4 4||6 6||2 2||3 3||7 7||8 8||9 9||K K||A A||5 5||8 8||J J|
+---++---++---++---++---++---++---++---++---++---++---++---++---+
South player:
+---++---++---++---++---++---++---++---++---++---++---++---++---+
|7 7||9 9||4 4||5 5||J J||2 2||4 4||6 6||7 7||J J||3 3||K K||A A|
| C || C || D || D || D || S || S || S || S || S || H || H || H |
|7 7||9 9||4 4||5 5||J J||2 2||4 4||6 6||7 7||J J||3 3||K K||A A|
+---++---++---++---++---++---++---++---++---++---++---++---++---+
West player:
+---++---++---++---++---++---++---++---++---++---++---++---++---+
|5 5||T T||J J||K K||T T||Q Q||5 5||8 8||T T||Q Q||K K||4 4||Q Q|
| C || C || C || C || D || D || S || S || S || S || S || H || H |
|5 5||T T||J J||K K||T T||Q Q||5 5||8 8||T T||Q Q||K K||4 4||Q Q|
+---++---++---++---++---++---++---++---++---++---++---++---++---+
North player:
+---++---++---++---++---++---++---++---++---++---++---++---++---+
|3 3||8 8||Q Q||A A||6 6||3 3||9 9||A A||2 2||6 6||7 7||9 9||T T|
| C || C || C || C || D || S || S || S || H || H || H || H || H |
|3 3||8 8||Q Q||A A||6 6||3 3||9 9||A A||2 2||6 6||7 7||9 9||T T|
+---++---++---++---++---++---++---++---++---++---++---++---++---+

其实这道题没有那么复杂,还是挺简单的。

#include <iostream>
#include <bits/stdc++.h>
using namespace std;

struct Card
{
    char a,b;
    Card(char i,char j):a(i),b(j) {}
    Card() {}
};
char num1[13] = {'2','3','4','5','6','7','8','9','T','J','Q','K','A'};
char num2[4] = {'C','D','S','H'};
int v[4] = {1,2,3,0};
string sentence[4] = {"East player","South player","West player","North player"};


int get1(char a)
{
    for(int i = 0; i<13; i++)
    {
        if(a == num1[i])
        {
            return i;
        }
    }
}

int get2(char a)
{
    for(int i = 0; i<13; i++)
    {
        if(a == num2[i])
        {
            return i;
        }
    }
}

bool cmp(const Card & s,const Card & t)
{
    int v1,v2,f1,f2;
    v1 = get1(s.a);
    v2 = get1(t.a);

    f1 = get2(s.b);
    f2 = get2(t.b);
    if(f1 == f2)
        return v1<v2;
    else
        return f1<f2;
}

int main()
{
    char c;
    char a,b;
    int n;
    while(cin>>c)
    {
        vector<Card>p[4];
        if(c == 'N') n = 3;
        if(c == 'E') n = 0;
        if(c == 'S') n = 1;
        if(c == 'W') n = 2;
        for(int i = 0;i<52;i++)
        {
            cin>>a>>b;
            p[(n++)%4].push_back(Card(a,b));
        }
        for(int i = 0; i<4; i++)
        {
            sort(p[i].begin(),p[i].end(),cmp);
        }
        for(int i=0;i<4;i++)
        {
            if(i==0) printf("East player:\n");
            else if(i==1) printf("South player:\n");
            else if(i==2) printf("West player:\n");
            else  printf("North player:\n");

            printf("+---++---++---++---++---++---++---++---++---++---++---++---++---+\n");
            for(int k=0;k<13;k++)
                printf("|%c %c|",p[i][k].a,p[i][k].a);printf("\n");
            for(int k=0;k<13;k++)
                printf("| %c |",p[i][k].b);printf("\n");
            for(int k=0;k<13;k++)
                printf("|%c %c|",p[i][k].a,p[i][k].a);printf("\n");
            printf("+---++---++---++---++---++---++---++---++---++---++---++---++---+\n");
         }
         printf("\n");
    }
    return 0;
}
/**
S
4DQH3C2C
**/

猜你喜欢

转载自blog.csdn.net/qq_36257146/article/details/88353694