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;
}
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
openjudge约瑟夫问题是一个数学应用问题。问题的描述是:有n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。最后剩下的那个人就是猴王的编号。 这个问题在openjudge中的输入格式是每行是用空格分开的两个整数,第一个是n, 第二个是m (0 < m,n <= 300)。最后一行是0 0作为输入的结束标志。 要解决openjudge约瑟夫问题,我们需要编写一个程序来接收输入的n和m值,并按照约瑟夫问题的规则计算出最后剩下的猴王的编号。具体的解题算法可以使用循环队列或者递归的方式来实现,具体实现的代码可以根据具体的编程语言来完成。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [openjudge 约瑟夫环问题](https://blog.csdn.net/sdz20172133/article/details/88351098)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [bailian.openjudge 2746:约瑟夫问题](https://blog.csdn.net/smartzxf/article/details/100829938)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值