a√斗地主之顺子

题目描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JavaEE】IP协议 应用层协议

&#x1f525;个人主页&#xff1a; 中草药 &#x1f525;专栏&#xff1a;【Java】登神长阶 史诗般的Java成神之路 &#x1f576;️一.IP地址 IP协议&#xff08;Internet Protocol&#xff09;是TCP/IP协议族中最核心的协议之一&#xff0c;它定义了数据包在网络中传输的标准…

快速使用react 全局状态管理工具--redux

redux Redux 是 JavaScript 应用中管理应用状态的工具&#xff0c;特别适用于复杂的、需要共享状态的中大型应用。Redux 的核心思想是将应用的所有状态存储在一个单一的、不可变的状态树&#xff08;state tree&#xff09;中&#xff0c;状态只能通过触发特定的 action 来更新…

测试工程师学历路径:从功能测试到测试开发

现在软件从业者越来越多&#xff0c;测试工程师的职位也几近饱和&#xff0c;想要获得竞争力还是要保持持续学习。基本学习路径可以从功能测试-自动化测试-测试开发工程师的路子来走。 功能测试工程师&#xff1a; 1、软件测试基本概念&#xff1a; 学习软件测试的定义、目的…

微信小程序开发——比较两个数字大小

在这里我们使用的工具是 需要自行安装和配置。 在微信小程序中比较两个数字大小有以下几种方式&#xff1a; 一、普通条件判断 在小程序的.js 文件中&#xff0c;先定义两个数字&#xff0c;如let num1 5; let num2 3;。通过if - else if - else语句&#xff0c;根据num1与…

【测试报告】博客系统

1.项目背景 在互联网高度发达的今天,越来越多的人开始学习编程,诞生了越来越多的程序员,但他们没有可以互相交流学习、分享经验的平台。本项目旨在为更多的程序员以及新手小白提供一个能够促进学习、共同进步&#xff0c;让小白也能成为大神的交流学习平台 1.1测试目标以及测试…

【数据结构】8——图3,十字链表,邻接多重表

数据结构8——图3&#xff0c;十字链表&#xff0c;邻接多重表 文章目录 数据结构8——图3&#xff0c;十字链表&#xff0c;邻接多重表前言一、十字链表结构例子 复杂例子 二、邻接多重表&#xff08;Adjacency Multilist&#xff09;例子 前言 除了之前的邻接矩阵和邻接表 …

Vue 第三方调用若依系统实现系统单点登录

应用场景 甲方现有平台系统拟集成我方新开发系统&#xff0c;实现单点登录功能&#xff0c;即用户登录主平台后&#xff0c;无需重复登录即可无缝访问新系统&#xff0c;提升用户体验与操作效率。 解决方案 实现代码 前端 Step:1 新建ssoLogin.vue页面 <template><d…

视觉SLAM ch5——相机与图像

一、单目模型 前言&#xff1a;本大标题下1~4部分讲述的都是单目针孔相机 SLAM的数学本质可以抽象为运动方程&#xff08;x&#xff09;和观测方程&#xff08;z&#xff09;&#xff08;书上的第二部分&#xff09; 教材第二章截图 书中P24页截图 其中的未知量为xk&#xff…

TiDB从0到1学习笔记(精华篇)

历时四个月&#xff0c;恭喜赵老师的《TiDB从0到1》 系列文章顺利完结&#xff0c;小编再次梳理一遍文稿&#xff0c;并附注解分享给大家。 整体架构 从 TiDB 1.0 到 8.0&#xff0c;TiDB 的体系结构一直在不断演进。接下来让我们一起看看整体架构的变化。 TiDB v1 TiDB v1&…

通过C# 裁剪PDF页面

在处理PDF文档时&#xff0c;有时需要精确地裁剪页面以适应特定需求&#xff0c;比如去除广告、背景信息或者仅仅是为了简化文档内容。 本文将指导如何使用免费.NET控件通过C#实现裁剪PDF页面。 免费库 Free Spire.PDF for .NET 支持在 .NET (C#, VB.NET, ASP.NET, .NET Core)…

AI 加持的云端 IDE——三种方法高效开发前后端聊天交互功能

以下是「豆包 MarsCode 体验官」优秀文章&#xff0c;作者努力的小雨。 豆包 MarsCode 豆包MarsCode 编程助手支持的 IDE: 支持 Visual Studio Code 1.67.0 及以上版本&#xff0c;以及 JetBrains 系列 IDE&#xff0c;如 IntelliJ IDEA、Pycharm 等&#xff0c;版本要求为 22…

告别繁琐粘贴,CleanClip Mac 版,让复制粘贴变得简单快捷!粘贴队列功能太强大了!

告别繁琐粘贴&#xff0c;CleanClip Mac 版&#xff0c;让复制粘贴变得简单快捷&#xff01; CleanClip for Mac &#x1f4cb; 是一款专为Mac用户设计的高效剪贴板管理工具。它解决了传统复制粘贴过程中的繁琐问题&#xff0c;让你的工作流程更加顺畅和高效。 &#x1f504;…

jenkins流水线+k8s部署springcloud微服务架构项目

文章目录 1.k8s安装2.jenkins安装3.k8s重要知识1.简介2.核心概念3.重要命令1.查看集群消息2.命名空间3.资源创建/更新4.资源查看5.描述某个资源的详细信息6.资源编辑7.资源删除8.资源重启9.查看资源日志10.资源标签 4.k8s控制台1.登录2.界面基本操作1.选择命名空间2.查看命名空…

一些写leetcode的笔记

标准库中的string类没有实现像C#和Java中string类的split函数&#xff0c;所以想要分割字符串的时候需要我们自己手动实现。但是有了stringstream类就可以很容易的实现&#xff0c;stringstream默认遇到空格、tab、回车换行会停止字节流输出。 #include <sstream> #incl…

六、二分搜索-算法总结

文章目录 六、二分搜索6.1 简介6.2 典型实例 -- 二分查找6.2 模板6.3 常见题目6.3.1 搜索插入位置6.3.2 搜索二维矩阵6.3.3 寻找旋转排序中数组中的最小值6.3.4 寻找旋转排序数组中的最小值 II6.3.5 搜索旋转排序数组6.3.6 搜索旋转排序数组 II 总结 六、二分搜索 6.1 简介 给…

电学基础概念详解及三相电公式汇总

​​​​​​​ 本文全面介绍了电路的基本组成、电学核心概念以及三相电的常用公式。首先&#xff0c;通过水力学中的现象类比&#xff0c;生动解释了电路中电池、开关、电阻和灯泡等元素的功能&#xff0c;帮助读者更好地理解电压、电流和电阻之间的关系。随后&#xff0c;详…

【笔记】进制转换

文章目录 一、任意进制转十进制1、整数转化成十进制&#xff08;1&#xff09;二进制转十进制&#xff08;2&#xff09;八进制转十进制 2、小数转化成十进制&#xff08;1&#xff09;二进制转十进制&#xff08;2&#xff09;八进制转十进制 3、代码1、整数转化成十进制2、小…

OpenCV-Python笔记(上)

安装 全局安装 pip install opencv-python项目虚拟环境安装 # 进入项目根路径执行 .venv/bin/pip install opencv-python计算机眼中的图像 一张图片由大小比如&#xff08;100*100&#xff09;决定&#xff0c;说明存在100*100的像素点&#xff0c;每个像素点存在颜色通道&…

Neo4j入门案例:西游记

创建一个基于《西游记》中“孙悟空”的黑神话版本的知识图谱。这个图谱将会包括《西游记》中的一些主要角色、地点、事件以及它们之间的关系。我们将创建至少10个节点和20个关系&#xff0c;并提供相应的Cypher语句。 数据模型定义 实体类型&#xff08;节点&#xff09; 角色…

Nuxt Kit 组件管理:注册与自动导入

title: Nuxt Kit 组件管理:注册与自动导入 date: 2024/9/15 updated: 2024/9/15 author: cmdragon excerpt: Nuxt Kit 为组件的注册和导入提供了灵活高效的解决方案。无论你是要批量导入组件,还是单独处理特定组件,这些工具都能够满足你的需求。使用这些方法可以显著提升…