华为OD机试真题 Java 实现【斗地主之顺子】【2023 B卷 100分】,附详细解题思路

news/2024/11/7 12:34:11/

在这里插入图片描述

一、题目描述

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

其中顺子的出牌规则为: 由至少 5 张由小到大连续递增的扑克牌组成,且不能包含 2。

例如: {3,4,5,6,7}、{13,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

不需要考虑输入为异常字符的情况

三、输出描述

组成的顺子,每张扑克牌数字用空格隔开。

四、Java算法源码

// 是否可以组成顺子
private static boolean flag = false;public static void main(String[] args) {Scanner sc = new Scanner(System.in);String[] input = sc.nextLine().split(" ");int[] arr = new int[input.length];for (int i = 0; i < arr.length; i++) {String tem = input[i];if (tem.equals("A")) {arr[i] = 14;} else if (tem.equals("J")) {arr[i] = 11;} else if (tem.equals("Q")) {arr[i] = 12;} else if (tem.equals("K")) {arr[i] = 13;} else {arr[i] = Integer.parseInt(tem);}}// 将扑克牌排序Arrays.sort(arr);int start = 0;int temp = 0;for (int i = 0; i < arr.length; i++) {// 2不能顺子if (arr[i] == 2) {continue;}if (start == 0) {start = arr[i];temp = arr[i];continue;}if (arr[i] == temp) {continue;}if (arr[i] == temp + 1) {temp = arr[i];} else {if (temp - start >= 4) {print(start, temp);}start = 0;temp = 0;}}if (temp - start >= 4) {print(start, temp);}if (!flag) {System.out.println("NO");}
}private static void print(int start, int end) {flag = true;for (int j = start; j <= end; j++) {if (j == 14) {System.out.print("A ");} else if (j == 11) {System.out.print("J ");} else if (j == 12) {System.out.print("Q ");} else if (j == 13) {System.out.print("K ");} else {System.out.print(j + " ");}}System.out.println();
}

五、效果展示

1、输入

2 9 J 2 3 4 K A 7 9 A 5 6

2、输出

3 4 5 6 7

在这里插入图片描述

3、再输入

5 9 Q 7 3 4 K A 10 J A 2 6

4、再输出

3 4 5 6 7
10 J Q K A

在这里插入图片描述


🏆下一篇:华为OD机试真题 Java 实现【跳房子II】【2023 B卷 100分】,附详细解题思路

🏆本文收录于,华为OD机试(JAVA)(2022&2023)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。

在这里插入图片描述


http://www.ppmy.cn/news/254642.html

相关文章

笔记本触摸板变手写板程序

很久没有回来了&#xff0c;研究生生活实在是忙啊&#xff01; 今天突然心血来潮&#xff0c;源于某bbs的一个小功能&#xff0d;一个论坛回帖的手写功能&#xff0c;类似与msn手写&#xff0c;于是灵机一动。 我其实很早就有这个想法了&#xff0c;不过只是想想而已&#xff1…

手写板(数位板)如何和希沃白板5无缝切换

安装好数位板的驱动程序&#xff0c;调出设置程序。不同品牌的数位板界面可能略有不同&#xff0c;但基本上是相同的。 先点击菜单"功能"&#xff0c;出现下图界面&#xff0c;然后点击你要设置的键。有硬键和软键&#xff0c;这里以硬键K9为例。点击“键盘”&…

手写板 如何平移 whiteboard(模式切换)YYDS 触控板 手写板 wacom 设置

坑 好像没有这样的功能 用鼠标可以直接拖拽(最终答案) 终于找到了一种解决方案&#xff01;&#xff01;&#xff01; 把笔模式替换成鼠标模式。 天啊&#xff0c;天啊&#xff0c;找了两天&#xff0c;终于找到了解决方案。把这个换成模式切换即可&#xff01;&#xff01;&am…

计算机网络笔记手写板,电脑手写板怎么使用?莫慌!手把手教学来了

有些朋友真的很懒&#xff0c;烂到连打字都觉得累&#xff0c;这时候就可以使用手写笔了&#xff0c;那么电脑手写板怎么使用呢?别着急&#xff0c;今天小编就来说说电脑手写板的使用方法。希望对大家有帮助。 手写板是电脑的输入设备之一&#xff0c;我们可以将需要输入的内容…

平板电脑可以用手写的计算机软件,平板电脑可以当手写板用吗

大家好&#xff0c;我是时间财富网智能客服时间君&#xff0c;上述问题将由我为大家进行解答。 平板电脑不可以当手写板用&#xff0c;因为平板电脑的屏幕使用强度没有达到这个设计能力&#xff0c;这指的是使用专用手写笔的前提下&#xff0c;即使使用专用软件也只是简单的文字…

网课直播电脑手写板或者叫手机手写板

网课直播电脑手写板或者叫手机手写板&#xff0c;到底怎么叫我也说不好&#xff0c;类似于数位板功能。 就是用电脑上课时或者演示时&#xff0c;很多符号和公式输入法很难&#xff0c;鼠标也不好用&#xff0c;所以就弄了这个工具。 方便各位老师使用安卓手机向电脑屏幕输入…

电脑手写板怎么才能连接电脑使用

电脑手写板怎么才能连接电脑使用&#xff1f;很多小伙伴买来电脑手写板不知道怎么连到电脑上使用&#xff0c;其实我们要先给电脑安装相关驱动才可以&#xff0c;下面我们来看看如何给电脑装上电脑板驱动吧。​​​​​​​1、在你的电脑板官网上&#xff0c;找到官网的驱动栏目…

用手写板向计算机输入汉字是什么技术,使用手写板输入文字的简单介绍

键盘是一种重要的输入设备,目前出现了几百种计算机汉字输入法,对于较熟练操作计算机的人来说汉字输入已不再是什么问题,但是对于一些想要用计算机,可又是刚刚接触计算机的人,比如说年龄比较大的人和很多的小学生来说,使用键盘输入会感觉很生疏。 使用手写板输入文字的简单介绍 …