当前位置: 首页 > news >正文

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;}}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 传输层协议——udp/tcp
  • STL,智能指针和线程安全,线程安全的单例模式和懒汉饿汉的实现,以及读者写者问题
  • 如何用 Helm Chart 安装指定版本的 GitLab Runner?
  • 安卓手机安装Termux,变成linux服务器
  • Python 数学建模——Pearson/Spearman 相关系数
  • linux高级
  • 磁光阱的原理与搭建操作
  • 海康威视相机在QTcreate上的使用教程
  • pycharm 安装对应python版本的pip
  • Linux C高级 day1
  • SpringBoot2:web开发常用功能实现及原理解析-@ControllerAdvice实现全局异常统一处理
  • WPF动画
  • Vue学习记录之一(介绍及脚手架的使用)
  • spark学习笔记
  • 微信小程序页面制作——婚礼邀请函(含代码)
  • 自己简单写的 事件订阅机制
  • codis proxy处理流程
  • If…else
  • js ES6 求数组的交集,并集,还有差集
  • Laravel 菜鸟晋级之路
  • PHP CLI应用的调试原理
  • Redux系列x:源码分析
  • windows下使用nginx调试简介
  • 从setTimeout-setInterval看JS线程
  • 机器学习学习笔记一
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 聊聊redis的数据结构的应用
  • 前端
  • 突破自己的技术思维
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • # .NET Framework中使用命名管道进行进程间通信
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #微信小程序:微信小程序常见的配置传值
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (1)svelte 教程:hello world
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (2024)docker-compose实战 (9)部署多项目环境(LAMP+react+vue+redis+mysql+nginx)
  • (k8s)Kubernetes 从0到1容器编排之旅
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (笔试题)合法字符串
  • (二)pulsar安装在独立的docker中,python测试
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (一)appium-desktop定位元素原理
  • (一)Neo4j下载安装以及初次使用
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)项目管理杂谈-我所期望的新人
  • ******之网络***——物理***
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞