【id:365】【10分】E. 打牌预处理

题目原文

题目描述

一副扑克牌除去大小王以外共有五十二张牌,包含黑桃(spade),红心(heart),梅花(club),方块(diamond)四种类型,每种类型有编号为1~13的十三张牌。

现在Josie想要和朋友一起玩牌,但手上的牌她不确定是否完整。请你编写程序,帮她计算一下缺少的牌有哪些。

输入

第一行输入为现有牌数n,接下来的n行为现有卡牌的信息(包含卡牌类型,卡牌数字),可能有重复的牌出现。

输出

输出缺少的牌,按照spade, heart, club, diamond的顺序依次输出。若两张牌类型一样,则按照数字大小依次输出。

样例

输入样例1

47
S 10
S 11
S 12
S 13
H 1
H 2
S 6
S 7
S 8
S 9
H 6
H 8
H 9
H 10
H 11
H 4
H 5
S 2
S 3
S 4
S 5
H 12
H 13
C 1
C 2
D 1
D 2
D 3
D 4
D 5
D 6
D 7
C 3
C 4
C 5
C 6
C 7
C 8
C 9
C 10
C 11
C 13
D 9
D 10
D 11
D 12
D 13

输出样例1

S 1
H 3
H 7
C 12
D 8

AC代码

#include <stdio.h>

int spade[20], heart[20], club[20], diamond[20];

void print(int a[], char c)
{
    for (int i = 1; i <= 13; i++)
        if (a[i] == 0)
            printf("%c %d\n", c, i);
}

int main()
{
    int n;
    scanf("%d", &n);
    getchar();

    while (n--)
    {
        char c;
        int x;
        scanf("%c %d", &c, &x);
        getchar();

        if (c == 'S')
            spade[x] = 1;
        else if (c == 'H')
            heart[x] = 1;
        else if (c == 'C')
            club[x] = 1;
        else if (c == 'D')
            diamond[x] = 1;
    }

    print(spade, 'S');
    print(heart, 'H');
    print(club, 'C');
    print(diamond, 'D');

    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是用Python实现创建一副54张扑克牌、洗牌和分牌的示例代码: ```python import random # 创建一副54张扑克牌 suits = ['♠', '♥', '♣', '♦'] ranks = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K'] deck = [rank + suit for suit in suits for rank in ranks] + ['小', '大'] # 洗牌(打乱牌的顺序) random.shuffle(deck) # 打牌(分牌) player1 = deck[:17] player2 = deck[17:34] player3 = deck[34:51] bottom_cards = deck[51:] print('玩家1的手牌是:', player1) print('玩家2的手牌是:', player2) print('玩家3的手牌是:', player3) print('底牌是:', bottom_cards) ``` 解释一下代码: 1. 首先定义了两个列表`suits`和`ranks`,分别表示牌的花色和点数,然后使用列表推导式生成一副54张扑克牌,最后添加了两张大小。 2. 使用Python的内置函数`random.shuffle()`对牌进行洗牌,打乱牌的顺序。 3. 使用切片操作将牌分给三个玩家和底牌。 运行上述代码,输出如下: ``` 玩家1的手牌是: ['2♥', '8♥', '7♦', '5♠', '3♠', '6♠', 'A♥', '10♠', '3♥', '5♦', '4♠', '10♣', 'K♦', 'J♠', '4♦', '2♠', '7♠'] 玩家2的手牌是: ['8♣', '10♦', '6♣', 'Q♥', 'K♣', '5♥', '7♥', '6♥', '9♣', 'Q♦', 'A♦', '9♥', 'K♥', 'J♣', 'A♠', '2♦', 'Q♣'] 玩家3的手牌是: ['J♥', '8♠', '3♦', '4♣', '7♣', '9♠', '4♥', 'K♠', '6♦', '10♥', '5♣', '9♦', 'Q♠', 'A♣', 'J♦', '2♣', '3♣'] 底牌是: ['大', '小', '8♦'] ``` 可以看到,牌已经成功地被分给了三个玩家和底牌。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值