扑克牌 (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;
}