斗地主之顺子

news2025/4/22 3:12:23

题目描述

在斗地主扑克牌游戏中,扑克牌由小到大的顺序为:3,4,5.6,7.8,9,10,J,Q,K,A,2,玩家可以出的扑克牌阵型有:单张、对子、顺子、飞机、炸弹等。

其中顺子的出牌规则为:由至少5张由小到大连续递增的扑克牌组成,且不能包含2。
例如:(3.4.5.6.7)、(3.4.5.6.7.8.9.10.J.Q.K,A)都是有效的顺子;而{J,Q.K.A,2)、(2,.3.4.5,6)、(3.4.5,6)、(3,4.5.6.8)等都不是顺子给定一个包含 13 张牌的数组,如果有满足出牌规则的顺子,请输出顺子。
如果存在多个顺子,请每行输出一个顺子,且需要按顺子的第一张牌的大小(必须从小到大)依次输出。
如果没有满足出牌规则的顺子,请输出NO。

输入描述:

13张任意顺序的扑克牌,每张扑克牌数字用空格隔开,每张扑克牌的数字都是合法的,并且不包括大小王:2 9 J 2 3 4 K A 7 9 A 5 6
不需要考虑输入为异常字符的情况

输出描述:

组成的顺子,每张扑克牌数字用空格隔开:3 4 5 6 7

//2 9 J 2 3 4 K A 7 9 A 5 6 =>3 4 5 6 7
//2 9 J 10 3 4 K A 7 Q A 5 6=>3 4 5 6 7 ,9 10 J Q K A
//2 9 9 9 3 4 K A 10 Q A 5 6=>NO
public class 斗地主之顺14 {
    public static void main(String[] args) {
        // 接收数据
        Scanner sc = new Scanner(System.in);
        String[] strings = new String[13];
        for (int i = 0; i < 13; i++) {
            strings[i] = sc.next();
        }
        // 将数据转换为int形式
        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 0; i < 13; i++) {
            int val = getNum(strings[i]);
            if (val != 0){
                list.add(val);
            }
        }
        // 进行排序
        Collections.sort(list);
        // 收集符合要求的顺子
        ArrayList<List<Integer>> res = new ArrayList<>();
        boolean[] used = new boolean[list.size()];
        for (int i = 0; i < list.size(); i++) {
            if (used[i])continue;
            ArrayList<Integer> cur = new ArrayList<>();
            cur.add(list.get(i));
            used[i] = true;

            for (int j = i+1; j < list.size(); j++) {
                if (used[j])continue;
                if (list.get(j) == cur.get(cur.size()-1)+1){
                    cur.add(list.get(j));
                    used[j] = true;
                }else if (list.get(j) > cur.get(cur.size()-1)+1){
                    break;
                }
            }
            if (cur.size() >= 5){
                res.add(cur);
            }else {
                for(Integer a: cur){
                    used[list.indexOf(a)] = false;
                }
            }
        }
        // 按要求输出顺子
        if (res.isEmpty()){
            System.out.println("NO");
        }else {
            for (List<Integer> item: res){
                for (int i = 0; i < item.size(); i++) {
                    if (i > 0) System.out.print(" ");
                    Integer val = item.get(i);
                    if (val == 11){
                        System.out.print("J");
                    }else if (val == 12){
                        System.out.print("Q");
                    }else if (val == 13){
                        System.out.print("K");
                    }else if (val == 14){
                        System.out.print("A");
                    }else {
                        System.out.print(val);
                    }
                }
                System.out.println();
            }
        }
    }

    private static int getNum(String s) {
        switch (s){
            case "3":return 3;
            case "4":return 4;
            case "5":return 5;
            case "6":return 6;
            case "7":return 7;
            case "8":return 8;
            case "9":return 9;
            case "10":return 10;
            case "J":return 11;
            case "Q":return 12;
            case "K":return 13;
            case "A":return 14;
            default:return 0;
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2126126.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Windows系统工具】dll综合解决工具,解锁专业版功能!

电脑上经常会出现dll文件丢失的情况&#xff0c;那么面对这种情况&#xff0c;小白用户应该如何应对并且解决呢&#xff1f; 这时&#xff0c;不得不提出dll综合解决工具的重要性了。虽然电脑上有很多自带的工具可以使用&#xff0c;但是方法步骤都比较复杂&#xff0c;很多小白…

day4 QT

作业 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget), speech(new QTextToSpeech) {ui->setupUi(this);id startTimer(1000); }Widget::~Widget() {delete ui; }void Widget::tim…

从C语言过渡到C++

&#x1f4d4;个人主页&#x1f4da;&#xff1a;秋邱-CSDN博客☀️专属专栏✨&#xff1a;C &#x1f3c5;往期回顾&#x1f3c6;&#xff1a;单链表实现&#xff1a;从理论到代码-CSDN博客&#x1f31f;其他专栏&#x1f31f;&#xff1a;C语言_秋邱的博客-CSDN博客 目录 ​…

常用的 CMD 指令及其功能

目录 1&#xff1a;Win R命令。 2&#xff1a;cmd命令。 3&#xff1a;盘符名: 命令。 4: mkdir命令。 5&#xff1a;dir命令。 6: dir 名称。 7&#xff1a;Tab。 8&#xff1a;cd name。 9: copy con 文件的名字。 10: type 文件名。 11: cd .. 命令。 12&a…

分享 6 款在日常电脑办公中频繁使用的软件

分享6款经常能用到的电脑办公软件&#xff0c;个个功能强大又易用&#xff0c;装进电脑可以提高工作效率&#xff0c;让你每天准点下班~ 1、Dropit 这个软件真的很给力&#xff0c;特别适合我们这种平时电脑桌面上乱七八糟的人。你知道的&#xff0c;有时候下载各种东西&…

自然语言处理系列六十八》搜索引擎项目实战》搜索引擎系统架构设计

注&#xff1a;此文章内容均节选自充电了么创始人&#xff0c;CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》&#xff08;人工智能科学与技术丛书&#xff09;【陈敬雷编著】【清华大学出版社】 文章目录 自然语言处理系列六十八搜索引擎项目实战》搜索引擎系统架构设计…

【人工智能】Transformers之Pipeline(十七):文本分类(text-classification)

目录 一、引言 二、文本分类&#xff08;text-classification&#xff09; 2.1 概述 2.2 DistilBERT—BERT 的精简版&#xff1a;更小、更快、更便宜、更轻便 2.3 应用场景​​​​​​​ 2.4 pipeline参数 2.4.1 pipeline对象实例化参数 2.4.2 pipeline对象使用参数 …

布偶猫应该喂什么猫罐头:交响乐金罐、希喂、尾巴生活测评

布偶猫&#xff0c;萌宠界的甜心代表&#xff0c;爱撒娇又黏人。想让它健康成长&#xff1f;喂养是关键。选粮不当&#xff0c;健康受损。今日精选三款热门主食罐&#xff0c;依据布偶猫营养需求&#xff0c;直接评测&#xff0c;助你快速了解何为理想之选。无需繁琐&#xff0…

状态机按键消抖(学习笔记)

状态转移图&#xff1a; module key_filter(Clk,Reset_n,Key, // Key_P_Flag, // Key_R_Flag,Key_Flag,Key_state);input Clk;input Reset_n;input Key; // output reg Key_P_Flag; // output reg Key_R_Flag;output Key_Flag;output reg Key_state; reg Key_P_…

002 JavaClent操作RabbitMQ

Java Client操作RabbitMQ 文章目录 Java Client操作RabbitMQ1.pom依赖2.连接工具类3.简单模式4.工作队列模式&#xff08;work&#xff09;公平调度示例 5.发布/订阅模式&#xff08;fanout&#xff09;交换机绑定示例代码 6.路由模式&#xff08;direct&#xff09;7.Topic匹配…

RQ-RAG:提升检索增强生成模型的查询精炼能力

人工智能咨询培训老师叶梓 转载标明出处 大模型在面对未见场景时&#xff0c;往往会产生不准确或虚构的回答&#xff0c;这限制了它们的实用性。为了解决这一问题&#xff0c;香港科技大学、香港理工大学和麻省理工学院的研究团队提出了一种名为RQ-RAG&#xff08;Retrieval-A…

国产芯片LT8711HE:TYPE-C/DP1.2转HDMI2.0转换器,4k60Hz高分辨率

以下为LT8711HE芯片的简单介绍&#xff0c;如有介绍不尽之处&#xff0c;请指出 LT8711HE是一个高性能的Type-C/DP1.2到HDMI2.0转换器&#xff0c;用于连接USB Type-C源或DP1.2源到HDMI2.0接收器。 LT8711HE集成了一个DP1.2兼容的接收器和一个HDMI2.0兼容的发射器。另外&…

出处不详 取数游戏

目录 取数游戏题目描述背景输入输出数据范围 题解解法优化 打赏 取数游戏 题目描述 背景 两人将 n n n个正整数围成一个圆环&#xff0c;规则如下&#xff1a; 第一名玩家随意选取数字&#xff1b;第二名玩家从与第一名玩家相邻的两个数字中选择一个&#xff1b;而后依次在…

MOM成功实施分享(五)刨花板制造数字化聚焦业务场景

刨花板是一种人造板材&#xff0c;由木材或其他植物纤维原料制成。 在制造生产过程中目前存在以下痛点&#xff1a; 原材料质量不稳定&#xff1a;刨花板的质量很大程度上取决于原材料的质量&#xff0c;如果原材料的来源不稳定、质量参差不齐&#xff0c;会影响刨花板的性能…

从线段中搜寻提取闭合轮廓(三)

1.前言 做底层和数据的调试问题也是个麻烦事&#xff0c;如果没有方便的可视化工具辅助&#xff0c;那将令人感到痛苦&#xff0c;借助可视化的工具可以让我们高效、省心&#xff0c;进而心情舒畅&#xff0c;重要的是可以提高调试效率。 当然可视化工具也分不同层次的…

我对 monorepo 的一些思考

我对 monorepo 的一些思考 我对 monorepo 的一些思考 前言它的由来技术选型 管理工具语言与打包调试工具测试框架代码规范与质量控制本地引用与发包替换发包流程Github 相关配置部署 使用手册 功能特性总结如何使用&#xff1f;清除默认的包(可选)模板包介绍 packagesapps 更新…

25虾皮笔试shopee笔试测评sea笔试测评题型

虾皮笔试shopee笔试测评用的自己的笔试系统&#xff0c;全英文笔试&#xff1a; 1.Numerical Reasoning Test&#xff1a;10题&#xff0c;言语推断和数学计算 2. Verbal Reasoning Test&#xff1a;10题&#xff0c;言语理解&#xff0c;每题一段英文材料&#xff0c;选对错…

医院管理|基于java的医院管理系统小程序(源码+数据库+文档)

医院管理系统小程序 目录 基于java的医院管理系统小程序 一、前言 二、系统设计 三、系统功能设计 医生信息管理 排班信息管理 科室信息管理 科室预约 病历信息 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a;…

浅谈模型在信贷营销中的应用

浅谈模型在信贷营销中的应用 当前在信贷营销场景中,用户流量竞争愈加激烈,获客成本持续攀高,客户消费观念和消费信心趋向保守,传统的信贷营销方式效果逐渐乏力,借助数据挖掘技术对用户进行多元优化及精细化管理已经成为企业在经营发展中的普遍趋势。在此背景下,本文将围…

如何设置新建每个Python文件开头带上作者名和时间?

1、在pycharm界面中点击"File->Settings" 2、点击"Editor->File and Code Templates->Python Script" 3、添加信息后&#xff0c;点击"ok" # encoding: utf-8 # File : ${NAME}.py # Author: jianlu # Date : ${YEAR}/${MONTH}/${DA…