首页 > 其他分享 >是不是顺子 (25分)

是不是顺子 (25分)

时间:2023-05-30 16:35:47浏览次数:42  
标签:25 King 是不是 mp str ans preValue 顺子


本题目要求对读入的五张Poker牌进行判断:它是否是一个正常的顺子。 说明:34567890JQKA2wW相信大家知道一二,为简化操作,0代表10,w和W代表小王和大王,大,小王可代替任意的牌哟。编程判断输入的五张牌是否会构成一个顺子(方案多个时,输出较大的,34567和0JQKA分别是最小和最大的顺子)
输入格式:

输入用五个字符代表的五张牌,系统确保输入的数据无误,但并不一定是有序排列。
输出格式:

输出这五张牌组成的顺子或输出空表示不是顺子,注意大小王可当任意的牌使用,输出的顺子要求是最大的一个,且升序排列(如果有的话)。
输入样例1:

A0KJw

输出样例1:

[0JQKA]

输入样例2:

A3452

输出样例2:

[]

不要忘掉考虑大小王有剩余的情况

//
// Created by TIGA_HUANG on 2020/10/6.
//

#include <iostream>
#include <vector>
#include <map>
#include <algorithm>

using namespace std;

struct node {
    char c;
    int value;

    bool operator<(node &x) const {
        return value < x.value;
    }
};

vector<node> v;

int main() {
    map<char, int> mp;
    mp['3'] = 3;
    mp['4'] = 4;
    mp['5'] = 5;
    mp['6'] = 6;
    mp['7'] = 7;
    mp['8'] = 8;
    mp['9'] = 9;
    mp['0'] = 10;
    mp['J'] = 11;
    mp['Q'] = 12;
    mp['K'] = 13;
    mp['A'] = 14;
    mp['2'] = 15;
    string str;
    cin >> str;
    int King = 0;
    for (int i = 0; str[i]; ++i) {
        if (str[i] != 'w' && str[i] != 'W')
            v.push_back({str[i], mp[str[i]]});
        else {
            King++;
        }
    }
    sort(v.begin(), v.end());
    string ans;
    int preValue = v[0].value;
    ans += v[0].c;
    for (int j = 1; j < v.size(); ++j) {
        if (v[j].value - preValue != 1) {
            if (King == 0) {
                cout << "[]";
                return 0;
            } else {
                for (auto it = mp.begin(); it != mp.end(); ++it) {
                    if (it->second == preValue + 1) {
                        ans += it->first;
                        ans += v[j].c;
                        preValue = v[j].value;
                        break;
                    }
                }
                King--;
            }
        } else {
            ans += v[j].c;
            preValue = v[j].value;
        }
    }
    while (King) {
        for (auto it = mp.begin(); it != mp.end(); ++it) {
            if (it->second == preValue + 1) {
                ans += it->first;
                preValue = it -> second;
                break;
            }
        }
        King--;
    }
    if (ans.length() < 5) {
        cout << "[]";
        return 0;
    }
    cout << '[';
    for (int k = 0; k < 5; ++k) {
        cout << ans[ans.length() - 5 + k];
    }
    cout << ']';
    return 0;
}


标签:25,King,是不是,mp,str,ans,preValue,顺子
From: https://blog.51cto.com/u_16144724/6380357

相关文章

  • 7-3 树的同构 (25分)
    7-3树的同构(25分)给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。图1图2现给定两棵树,请你判断它们是否是同构......
  • 堆栈模拟队列 (25分)
    堆栈模拟队列(25分)设已知有两个堆栈S1和S2,请用这两个堆栈模拟出一个队列Q。所谓用堆栈模拟队列,实际上就是通过调用堆栈的下列操作函数:intIsFull(StackS):判断堆栈S是否已满,返回1或0;intIsEmpty(StackS):判断堆栈S是否为空,返回1或0;voidPush(StackS,ElementTypeitem):将......
  • 剑指 Offer 61. 扑克牌中的顺子
    题目描述:从若干副扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为0,可以看成任意数字。A不能视为14。 限制:数组长度为5 数组的数取值为[0,13].  方法:排序+遍历 classSolutio......
  • hmac(md5,sha256) 魔改算法逆向
    2bebb2b85345bac93a790d1a6986b3d5经验1貌似特征码,需要在从伪代码切换到汇编模式,再点击看具体值2找出特征码,然后google再带算法,再带csource如md50x242070DBcsource3md5和sha1在transfrom4个特征相同,sha1多两个重命名经验根据上下文关系,需要点进去发现特征量,验......
  • 关于vi编辑出现E325: ATTENTION的解决方案
    解决方案 1-vifilename进入编辑器,查看报错信息,出现E325:ATTENTION例如:E325:ATTENTIONFoundaswapfilebythename"rm/var/opt/gitlab/gitlab-rails/etc/.gitlab.yml.swp"2-复制Foundaswapfilebythename之后的信息,并退出......
  • 代码随想录算法训练营第17天 | ● 110.平衡二叉树 ● 257. 二叉树的所有路径 ● 404
     第六章二叉树part04 今日内容:  ●  110.平衡二叉树 ●  257. 二叉树的所有路径 ●  404.左叶子之和   详细布置  迭代法,大家可以直接过,二刷有精力的时候 再去掌握迭代法。  110.平衡二叉树 (优先掌握递归) 再一次涉及到,什么是高度,什么是......
  • 文心一言 VS 讯飞星火 VS chatgpt (25)-- 算法导论4.2 7题
    七、设计算法,仅使用三次实数乘法即可完成复数a+bi和c+di相乘。算法需接收a、b、c和d为输入,分别生成实部ac-bd和虚部ad+bc。文心一言:可以使用如下算法来计算复数a+bi和c+di的积,且只需进行三次实数乘法:1.将a和b相乘,得到ab;2.将c和d相乘,得到cd;3.将ab+cd赋......
  • Java-Day-25( 字节输入流 + FileInputStream 和 FileOutputStream + FileReader 和 Fi
    Java-Day-25InputStream(字节输入流)InputStream抽象类是所有类字节输入流的超类InputStream常用的子类FileInputStream:文件输入流BufferedInputStream:缓冲字节输入流ObjectInputStream:对象字节输入流FileInputStream和FileOutputStreamFileInputStream(文......
  • WPS2019集美大学版v11.8.6.11825
    软件介绍WPSOffice2019增强版(wps集美大学专用版)是一款由大学教育机构定制的WPS企业版,wps2019政府版拥有正版授权,免激活可以长期使用.金山Office办公软件最新wps2019专业增强版wps2019永久激活版下载.软件截图版本特点WPS2019集美大学专用版:免激活、去水印、永久授权、......
  • SM2259XT2+IM3D固件下载,DIY+简单测试SM2259XT2+384G B0KB的固态
    SM2259XT2固件下载,DIY+简单测试SM2259XT2+384GB0KB的固态。这是本次要出场的固态U盘:刚好找到一个美光的B0KB,单颗384GB,想起来之前买了几百片59XT2的U盘板子,刚好这个东西支持,贴上去试试。从量产部落下载了SM2259XT2开卡工具,上电读一下ID,ID齐全,直接自动识别开卡。一把过,颗粒原来在一......