TB椰程 TypeBuddy 打字搭子

2024 扑克牌 · 方案一 用集合去重

CSP-J 标程 · 复赛真题 · 代码 · cpp · 难度 1/5 · 共 683 字

把牌名塞进 set,52 减去集合大小

  • 2024
  • 模拟

正文

// CSP-J 2024 复赛 T1 · 扑克牌
// 原题:https://oj.yecheng.tv/p/ccf-CSPJ2024A
// 题意:一副完整的扑克牌有 4 种花色 × 13 种点数 = 52 张,每种组合恰好一张。
// 现在手上有 n 张牌(可能有重复),问至少还要借几张才能凑出完整的一副。
//
// 方案一 · 用 set 去重
// 重复的牌只能算一种,所以问题就是「手里已经有多少种不同的牌」。
// 把每张牌的两个字符拼成一个字符串塞进 set,set 自动去重,
// 答案就是 52 减去 set 的大小。
// 复杂度 O(n log n),n 只有 52,怎么写都行。

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

int main() {
    freopen("poker.in", "r", stdin);
    freopen("poker.out", "w", stdout);

    int n;
    cin >> n;
    set<string> have;
    for (int i = 0; i < n; i++) {
        string card;
        cin >> card;
        have.insert(card);          // 重复的同一种牌只算一次
    }
    cout << 52 - (int)have.size() << "\n";
    return 0;
}

CSP-J 标程 · 复赛真题的其它内容

打字首页 · 词库画廊 · 编程打字 · 指法入门 · 天梯榜 · 数据分析 · 班级课堂 · 关于我们
椰程 TypeBuddy 打字搭子 —— 键盘指法练习 · 单词记忆 · 班级课堂 · 在线 PK