a√斗地主之顺子

news2024/11/22 11:29:04

题目描述

在斗地主扑克牌游戏中,扑克牌由小到大的顺序为: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/2137458.html

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

相关文章

三、Kubernetes中的控制器的使用

一 什么是控制器 官方文档&#xff1a; 工作负载管理 | Kubernetes 控制器也是管理pod的一种手段 自主式pod&#xff1a;pod退出或意外关闭后不会被重新创建 控制器管理的 Pod&#xff1a;在控制器的生命周期里&#xff0c;始终要维持 Pod 的副本数目 Pod控制器是管理pod…

Vue3+CesiumJS相机定位camera

new Cesium.Camera (scene) 摄像机由位置&#xff0c;方向和视锥台定义。 方向与视图形成正交基准&#xff0c;上和右视图x上单位矢量。 视锥由6个平面定义。每个平面都由 Cartesian4 对象表示&#xff0c;其中x&#xff0c;y和z分量定义垂直于平面的单位矢量&#xff0c;w分量…

springboot 整合 nacos 配置实现多个环境不同配置

目录 1、描述 2、Nacos服务端安装 3、创建dataId 配置中心 4、创建一个springboot 项目 5、重点&#xff1a;不同的springboot 读取不同application 6、总结 1、描述 一个项目一般会有中心配置文件&#xff0c;现在简单上手主流有Apollo&#xff0c;nacos config &#…

python的流程控制语句之制作空气质量评估系统

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

VideoSRT 注册邀请码,填写邀请码免费获得3天专业版授权

邀请码&#xff1a;aN2M40 填写邀请码免费获得3天专业版授权

【Python刷题】Atcoder Beginner Contest 371

目录 A - Jiro题目描述算法思路代码实现 B - Taro题目描述算法思路代码实现 D - 1D Country题目描述算法思路代码实现 E - I Hate Sigma Problem题目描述算法思路代码实现 A - Jiro 题目描述 有三个人&#xff0c;知道他们之中每两个人的年龄关系&#xff0c;输出年龄第二大的…

rust GUI框架Tauri入门——基于vanilla.js

文章目录 Tauri介绍Vite开始创建 Rust 项目 调用指令window.__TAURI_INVOKE__.invoke is undefined 问题参考资料JavaScript 模块VueVue RouteviteNuxt Tauri介绍 Tauri是一款用Rust构建的开源框架&#xff0c;用于创建轻量级、安全且高效的桌面应用程序。它将Rust的强大功能与…

Qt-QProgressBar显示类控件(27)

目录 描述 相关属性 使用 引入头文件机制 作用 描述 就是一个进度条&#xff0c;如下这个样子 相关属性 这里是一些属性 minimum进度条最⼩值maximum进度条最⼤值value进度条当前值 alignment ⽂本在进度条中的对⻬⽅式&#xff1a; • Qt::AlignLeft :左对⻬ • Qt::…

[Python学习日记-21] Python 中的字符编码(上)

[Python学习日记-21] Python 中的字符编码&#xff08;上&#xff09; 简介 ASCII 码 字符编码中的断句 GB2312 和 GBK 简介 在编程之路上&#xff0c;如果你不把编码问题搞清楚&#xff0c;那么它将像幽灵一般纠缠你整个职业生涯&#xff0c;各种灵异事件会接踵而来&#…

除了字符串前导的*号之外,将串中其它*号全部删除

要求 假定输入的字符串中只包含字母和*号。请编写函数fun&#xff0c;它的功能是:除了字符串前导的*号之外&#xff0c;将串中其它*号全部删除。在编写函数时&#xff0c;不得使用C语言提供的字符串函数。函数fun中给出的语句仅供参考。 例如&#xff0c;字符串中的内容为:-**…

文件格式转换:EXCEL和CSV文件格式互相转换

目录 1.EXCEl和CSV文件格式互相转换1.1首先安装所需的Python包1.2excel转换为csv代码如下:1.3csv转换为excel代码如下:由于excel文件在数学建模数据处理当中的局限性,我们通常把excel文件转换为csv文件来处理,下面是相关的代码,我直接封装成函数,你们直接调用即可,我会添…

Selenium基础入门:环境搭建、浏览器驱动配置及基本使用方法

目录 引言 一、Selenium环境搭建 1.1 Python环境准备 1.1.1 下载并安装Python 1.1.2 安装pip 1.2 Selenium库安装 1.3 浏览器驱动安装 1.3.1 ChromeDriver 1.3.2 GeckoDriver&#xff08;Firefox&#xff09; 1.3.3 其他浏览器驱动 1.4 IDE和插件&#xff08;可选&a…

免费AI播客生成:notebooklm可以生成播客的两个发言人谈论的内容,从各种来源如研究论文、文章

参考&#xff1a; https://notebooklm.google.com/ 可以上传文章链接&#xff0c;ai自动生成播客两人对话&#xff1a; 另外notebooklm他本身也是个rag知识库对话&#xff0c;可以直接聊天框对话

CorrMatch复现

复现结果–Full&#xff1a;81.78327847863439&#xff0c;成功 U2PL’s splits计算量太大&#xff0c;不建议复现

Ubuntu 20.04 解决 nvidia-smi 出错问题

目录 一、初始问题 二、解决方法 2.1 法一 2.2 法二 三、新的问题 3.1 解决方案 3.2 进一步解决 3.3 最后解决 一、初始问题 今天要在本机上装个环境时&#xff0c;运行了一下 nvidia-smi 突然遇到一个问题&#xff1a; Failed to initialize NVML: Driver/library ver…

Qt_按钮类控件

目录 1、QAbstractButton 2、设置带图标的按钮 3、设置带有快捷键的按钮 4、QRadioButtion&#xff08;单选按钮&#xff09; 4.1 QButtonGroup 5、QCheckBox 结语 前言&#xff1a; 按钮类控件是Qt中最重要的控件类型之一&#xff0c;该类型的控件可以通过鼠标的点击…

了解线程池

引出线程池&#xff1a; 假设小编是一个女生&#xff0c;小编处了一个对象&#xff0c;但是某一天小编不想和这个男生处对象了&#xff0c;但是小编还是想和别的男生处对象的&#xff0c;于是现在我就面临两个问题&#xff1a;一、怎么跟现任分手 二、开始物色新的对象&#…

软件安装攻略:Sublime Text 下载安装和使用教程

Sublime Text 下载安装和使用教程 Sublime Text是一个流行的跨平台文本编辑器&#xff0c;它具有以下一些主要功能和特点&#xff1a; &#xff08;1&#xff09;简洁的界面和快速的速度&#xff1a;Sublime Text拥有简约干净的界面&#xff0c;启动和响应速度很快。 &#…

Visual Studio打开项目的一些小技巧

Visual Studio(VS)是一款功能强大的集成开发环境&#xff0c;许多刚入门C/C的小白也会使用这款软件进行写代码&#xff0c;然而它的操作并不简单&#xff0c;下面将讲解一下VS打开项目文件的一些小技巧。 目录 &#x1f381;创建空项目 ❤️①点击“创建新项目” ❤️②点击“…

Unity中InputField一些属性的理解

先看代码&#xff1a; using UnityEngine; using UnityEngine.UI;public class TestInput : MonoBehaviour {[SerializeField]InputField inputField;void Start(){Debug.Log(inputField.text);Debug.Log(inputField.text.Length);Debug.Log(inputField.preferredWidth);Debug…