华为OD机试【德州扑克】(java)(200分)

这篇文章介绍了如何编写代码来判断五张扑克牌的牌型,包括同花顺、四条、葫芦、同花、顺子和三条,并在满足多个条件时选择最大牌型。给出了输入和输出样例以及关键的判断函数实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、题目描述

五张牌,每张牌由牌大小和花色组成,牌大小2~10、J、Q、K、A,牌花色为红桃、黑桃、梅花、方块四种花色之一
判断牌型
牌型1,同花顺:同一花色的顺子,如红桃2红桃3红桃4红桃5红桃6。
牌型2,四条:四张相同数字+单张,如红桃A黑桃A梅花A方块A+黑桃K.
牌型3,葫芦:三张相同数字+一对,如红桃5黑桃5梅花5+方块9梅花9。
牌型4,同花:同一花色,如方块3方块7方块10方块J方块Q.
牌型5,顺子:花色不一样的顺子,如红桃2黑桃3红桃4红桃5方块6。
牌型6,三条:三张相同+两张单。
说明

  1. 五张牌里不会出现牌大小和花色完全相同的牌;
  2. 编号小的牌型较大,如同花顺比四条大,依次类推;
  3. 包含A的合法的顺子只有10JQKA和A2345;类似KA23的序列不认为是顺子。

2、输入描述

输入由5行组成,每行为一张牌大小和花色,牌大小为2~10、J、Q、K、A,花色分别用字符H、S、C、D表示红桃、黑桃、梅花、方块。

3、输出描述

输出牌型序号,5张牌符合多种牌型时,取最大的牌型序号输出。
用例:

输入
4 H
5 S
6 C
7 D
8 D

输出
5
ps:4 5 6 7 8构成顺子,输出5

用例:

输入
9 S
5 S
6 S
7 S
8 S

输出
1
ps:既是顺子又是同花,输出1,同花顺

温馨提示!!!
华为OD机试考试官方会对考生代码查重。华为od机试因为有题库所以有很大的概率抽到原题。如果碰到了题库中的原题,千万不要直接使用题解中的代码,一定要做些修改,比如代码中的变量名,除此之外,代码的组织结构和逻辑也要进行一些改变,所以在日常的刷题中,要提前编写好属于自己的代码。

4、题解

本题不难,将几种牌型的判断逻辑分别封装起来,然后根据牌型从大到小判断即可
代码如下:

public static void main(String[] args) {
   
    Scanner sc = new Scanner(System.in);
    List<String[]> cardList = new ArrayList<>();
    for (int i=0; i<5; i++) {
   
        String[] strs = sc.nextLine().split(" ");
        cardList.add(strs);
    }

    // 获取最大牌型
    int res = getRes(cardList);
    System.out.println(res);
}

private static int getRes(List<String[]> cardList) {
   
    Map<String, Integer> cardMaps = getCardValues();

    // 数字
    List<String> numList = new ArrayList<>();
    // 花色
    List<String> colorList = new ArrayList<>();

    for (String[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

搬砖小夫子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值