Bailian4020 缺少的扑克牌【set】

4020:缺少的扑克牌
总时间限制: 1000ms 内存限制: 65536kB
描述
一副扑克牌有54张牌,分别是红桃,黑桃,方片,梅花各13张,以及大小王,现在Alex有一副牌,只剩下53张了,给出这些牌,请问少了哪张牌。
牌的表示方法:
大王: Joker 小王: joker
其余的牌用花色+牌面大小表示,花色表示如下:
红桃: Heart 黑桃: Spade 方片: Diamond 梅花: Club
2~10的牌面直接用2,3,4,5,6,7,8,9,10 表示,其余的:
A: Ace J: Jack Q: Queen K: King
比如方片J用 DiamondJack 表示, 红桃A用 HeartAce表示
输入
第一行一个整数N,表示有N组测试数据。接下来有N行,每行是53个字符串,表示53张牌
输出
N行,每行针对一组数据,输出少的那张牌
样例输入
2
ClubQueen Club2 ClubAce SpadeAce Club10 Heart2 HeartJack Heart6 Heart4 Spade6 Diamond6 Spade7 Heart7 Spade10 DiamondJack SpadeKing Heart10 Spade2 Spade9 Diamond5 Club9 Spade8 DiamondAce Heart9 Heart5 Club8 Club7 ClubKing Club6 Club5 Club3 SpadeQueen Spade3 HeartAce SpadeJack Joker DiamondQueen Club4 Spade4 Diamond4 HeartQueen HeartKing Diamond2 Diamond10 DiamondKing Diamond3 Heart3 Diamond7 Diamond8 Spade5 ClubJack Heart8 Diamond9
Heart5 DiamondJack Spade8 ClubQueen Club8 ClubJack Club3 SpadeJack HeartQueen Club5 SpadeKing Heart8 Club9 DiamondQueen Heart3 ClubAce SpadeQueen Heart4 Diamond3 Spade7 joker Diamond5 Spade4 Club4 Diamond4 Spade2 SpadeAce Heart2 Diamond8 Heart7 Spade9 Diamond9 HeartJack Spade6 Joker Club6 DiamondAce Diamond10 HeartAce Club7 Spade10 Heart6 HeartKing Diamond6 Heart9 Heart10 Diamond2 Spade3 DiamondKing Diamond7 ClubKing Club2 Club10
样例输出
joker
Spade5

问题链接Bailian4020 缺少的扑克牌
问题简述:(略)
问题分析:用STL的set来实现。先将54张牌放入一个集合中,读入一张牌则删除集合中的这张牌,剩下的就是少的那张牌了。需要注意如何初始化54张牌的集合。
程序说明:(略)
参考链接:(略)
题记:(略)

AC的C++语言程序如下:

/* Bailian4020 缺少的扑克牌 */

#include <bits/stdc++.h>

using namespace std;
const string color[] = {
    
     "Heart", "Spade", "Diamond", "Club", };
const string point[] = {
    
     "Ace" , "2", "3", "4", "5", "6", "7", "8", "9", "10",  "Jack", "Queen", "King", };
const int C = 4, P = 13;

int main()
{
    
    
    int n;
    cin >> n;
    while(n--) {
    
    
        set<string> st;
        st.insert("joker");
        st.insert("Joker");
        for(int i = 0; i < C; i++)
            for(int j = 0; j < P; j++)
                st.insert(color[i] + point[j]);

        string s;
        for(int i = 1; i <= 53; i++) {
    
    
            cin >> s;
            st.erase(s);
        }

        cout << *(st.begin()) << endl;
    }

    return 0;
}

猜你喜欢

转载自blog.csdn.net/tigerisland45/article/details/108552721