啧啧,这道题是我见过比较简单的一道题了,不过考场时竟然没有写出来,QWQ. 废话不多说,题目中说了求除了小 P 有的扑克牌外,还得借小 Q 多少扑克牌。那么,通过暴力来写,因为不排除重复扑克牌的情况下,所以,我们可以用52个flag来表示52张不同扑克牌,那么每次检查扑克牌,标记一下,还可以去重,用一个变量每次更新拥有的牌数,最后用52减一下即可。(为什么要设那么多flag,因为其他方法不会。。。)
正解开始:用字符串输入还得记录花色和点数,我觉得有点麻烦。。。所以,我用了结构体,输入后进行结构体排序,先比花色再比点数,最后输出时判断一下并且去重,完了。
代码如下:
#include<bits/stdc++.h>
using namespace std;
int ret = 52;
struct Pok{
char hs,ds;
}c[60];
int cmp(Pok a,Pok b){
if(a.hs == b.hs){
if(a.ds == b.ds){
}
return a.ds > b.ds;
}
return a.hs > b.hs;
}
int main(){
int n;
cin >> n;
for(int i = 0;i < n;i++){
cin >> c[i].hs >> c[i].ds;
}
int cnt = 0;
sort(c,c + n,cmp);
for(int i = 0;i < n;i++){
if(c[i].ds != c[i - 1].ds && c[i].hs == c[i].hs){
ret--;
}
}
cout << ret;
return 0;
}
代码尚未完善,能否哪些大神指点一下 ? ? ?