扑克牌 题解
2026-08-14 16:11:09
发布于:广东
45阅读
0回复
0点赞
思路1:
用四个数组,每个数组对应一个花色,然后下标对应牌的数字,现在手头上有的牌标记为一,最后统计,输出52 - 统计的结果。(硬写有点累呀)
思路2:众所周知,set(集合)有去重功能,那么我们定义一个string类型的set来存储,最后用52减去set里面不重复有多少张就可以了。
先上第一种代码
//思路1
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int D[14];
int C[14];
int H[14];
int S[14];
char a[3];
for(int i = 1;i < 14;i++)
{
D[i] = C[i] = H[i] = S[i] = 0;
}
for(int i = 1;i <= n;i++)
{
cin>>a;
if(a[0] == 'D')
{
switch(a[1])
{
case 'A':D[1]++;break;
case '2':D[2]++;break;
case '3':D[3]++;break;
case '4':D[4]++;break;
case '5':D[5]++;break;
case '6':D[6]++;break;
case '7':D[7]++;break;
case '8':D[8]++;break;
case '9':D[9]++;break;
case 'T':D[10]++;break;
case 'J':D[11]++;break;
case 'Q':D[12]++;break;
case 'K':D[13]++;break;
}
}
else if(a[0] == 'C')
{
switch(a[1])
{
case 'A':C[1]++;break;
case '2':C[2]++;break;
case '3':C[3]++;break;
case '4':C[4]++;break;
case '5':C[5]++;break;
case '6':C[6]++;break;
case '7':C[7]++;break;
case '8':C[8]++;break;
case '9':C[9]++;break;
case 'T':C[10]++;break;
case 'J':C[11]++;break;
case 'Q':C[12]++;break;
case 'K':C[13]++;break;
}
}
else if(a[0] == 'H')
{
switch(a[1])
{
case 'A':H[1]++;break;
case '2':H[2]++;break;
case '3':H[3]++;break;
case '4':H[4]++;break;
case '5':H[5]++;break;
case '6':H[6]++;break;
case '7':H[7]++;break;
case '8':H[8]++;break;
case '9':H[9]++;break;
case 'T':H[10]++;break;
case 'J':H[11]++;break;
case 'Q':H[12]++;break;
case 'K':H[13]++;break;
}
}
else if(a[0] == 'S')
{
switch(a[1])
{
case 'A':S[1]++;break;
case '2':S[2]++;break;
case '3':S[3]++;break;
case '4':S[4]++;break;
case '5':S[5]++;break;
case '6':S[6]++;break;
case '7':S[7]++;break;
case '8':S[8]++;break;
case '9':S[9]++;break;
case 'T':S[10]++;break;
case 'J':S[11]++;break;
case 'Q':S[12]++;break;
case 'K':S[13]++;break;
}
}
}
int sum = 0;
for(int i = 1;i < 14;i++)
{
if(D[i])
{
sum++;
}
if(C[i])
{
sum++;
}
if(H[i])
{
sum++;
}
if(S[i])
{
sum++;
}
}
cout<<52 - sum;
return 0;
}
再上第二种代码
//思路2
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
scanf("%d",&n);
string s;
set <string> a;
for(int i = 0;i < n;i++)
{
cin>>s;
a.insert(s);
}
printf("%d",52 - a.size());
return 0;
}
这里空空如也






有帮助,赞一个