扑克牌 (CSP-J 2024)

扑克牌 (CSP-J 2024)

这是一个字符串解析的题目,要求在给出一系列扑克牌后,计算还需要有多少张才能凑成一副完整的扑克牌。

一方面需要想好怎样表示一张扑克牌,以下是把扑克牌转化成1-13的数字的办法,也可以用字符来表示。

另一方面输入给出的牌中间可能有重复,以下是设置标志位的办法,也可以用set来自动去重。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
 
int n;
bool b[4][15];
 
int main() {
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        char s[10];
        scanf("%s", s);
        int v = s[1] - '0';
        if (s[1] == 'A') v = 1;
        else if (s[1] == 'T') v = 10;
        else if (s[1] == 'J') v = 11;
        else if (s[1] == 'Q') v = 12;
        else if (s[1] == 'K') v = 13;
        if (s[0] == 'D') b[0][v] = true;
        else if (s[0] == 'C') b[1][v] = true;
        else if (s[0] == 'H') b[2][v] = true;
        else if (s[0] == 'S') b[3][v] = true;
    }
    int ans = 0;
    for (int i = 1; i <= 13; i++) {
        ans += !b[0][i] + !b[1][i] + !b[2][i] + !b[3][i];
    }
    printf("%d\n", ans);
    return 0;
}