题目 1975: [蓝桥杯][算法提高VIP]扑克排序

蓝桥杯 | 扑克排序(详细解析) 一、题目描述 问题描述   扑克牌排序:构造扑克牌数组,对扑克牌进行排序。 排序原则如下: 数字从小到大是 2-10、J、Q、K 和 A, 花色从小到大是方块(diamond)、梅花(club)、红桃(heart)、黑桃(spade)。 两张牌比较时先看数字,数字相同时看花色。 要求对输入的扑克牌进行从小到大排序。 输入五张牌(表示黑桃 2、红桃 3、黑桃 3、方块 A 和梅花 J): 2s3h3sAdJc   输出结果应为:2 s 3 h 3 s J c A d 数组长度固定为 5。 二、代码实现 pub 阅读详情

时间限制: 1Sec 内存限制: 128MB

题目描述:(原题链接)

     扑克牌排序:构造扑克牌数组,对扑克牌进行排序。排序原则如下:数字从小到大是2-10、J、Q、K和A,花色从小到大是方块(diamond)、梅花(club)、红桃(heart)、黑桃(spade)。两张牌比较时先看数字,数字相同时看花色。要求对输入的扑克牌进行从小到大排序。
     输入五张牌(表示黑桃2、红桃3、黑桃3、方块A和梅花J): 2 s 3 h 3 s A d J c
     输出结果应为:2 s 3 h 3 s J c A d数组长度固定为5。


输入:

输入五张牌(表示黑桃2、红桃3、黑桃3、方块A和梅花J): 2s3h3sAdJc

样例输入:

无


输出:

输出结果应为:2s 3h 3s Jc Ad数组长度固定为5。

样例输出 :

无


解题思路:

     构造对象,重写排序方法,格式化输出

注意事项:

     注意牌面的大小的字符、牌面的花色的优先级处理

参考代码:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class Main implements Comparable<Object> {
    int num;     //表示牌面值的优先级: 2/3/4/5/6/7/8/9/10/11/12/13/14
    String zhi;  //表示牌面原本的值: 2/3/4/5/6/7/8/9/10/J/Q/K/A
    int color;   //表示牌面花色的优先级: 0/1/2/3
    char se;     //表示牌面花色原本的值: d/c/h/s
    Main(String num,char color){   //构造并重新设置花色优先级、牌面优先级
        this.se=color;this.zhi=num;
        if(color=='d')this.color=0;
        if(color=='c')this.color=1;
        if(color=='h')this.color=2;
        if(color=='s')this.color=3;
        if(num.equals("J"))this.num=11;
        else if(num.equals("Q"))this.num=12;
        else if(num.equals("K"))this.num=13;
        else if(num.equals("A"))this.num=14;
        else this.num=Integer.parseInt(num);
    }
    public int compareTo(Object o) {
        int flag=-1;
        Main o1=(Main)o;
        if(this.num>o1.num)               //先比较数值优先级
            flag=1;
        else if(this.num==o1.num) {       //再比较花色优先级
            if(this.color>o1.color)
                flag=1;
            else
                flag=-1;
        }
        return flag;
    }
    public String toString() {
        return this.zhi+this.se;           //输出格式
    }
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s =in.next();
        ArrayList<Main> arr =new ArrayList<Main>();
        int i=0;
        while(i<s.length()) {   //控制当i=length时停止输入
            if(s.charAt(i)>='2'&&s.charAt(i)<='9')
                {arr.add(new Main(""+s.charAt(i),s.charAt(i+1)));i=i+2;}
            else if(s.charAt(i)=='J')
                {arr.add(new Main("J", s.charAt(i+1)));i=i+2;}
            else if(s.charAt(i)=='Q')
                {arr.add(new Main("Q", s.charAt(i+1)));i=i+2;}
            else if(s.charAt(i)=='K')
                {arr.add(new Main("K", s.charAt(i+1)));i+=2;}
            else if(s.charAt(i)=='A')
                {arr.add(new Main("A", s.charAt(i+1)));i+=2;}
            else          //此时为牌面为10
                {arr.add(new Main("10",s.charAt(i+2)));i+=3;}
        }
        Collections.sort(arr);
        for(Main e:arr)
            System.out.print(e+" ");
       in.close();
    }
}
蓝桥杯 算法提高 12-2扑克排序 算法提高 12-2扑克排序   时间限制:1.0s   内存限制:256.0MB      问题描述   扑克牌排序:构造扑克牌数组,对扑克牌进行排序。排序原则如下:数字从小到大是2-10、J、Q、K和A,花色从小到大是方块(diamond)、梅花(club)、红桃(heart)、黑桃(spade)。两张牌比较时先看数字,数字相同时看花色。要求对输入的扑克牌进行从小 阅读详情

相关推荐

C++坦克大战源代码

【代码】C++坦克大战源代码。

强国豪,林中霖 2608

算法提高 12-2扑克排序

问题描述   扑克牌排序:构造扑克牌数组,对扑克牌进行排序。排序原则如下:数字从小到大是2-10、J、Q、K和A,花色从小到大是方块(diamond)、梅花(club)、红桃(heart)、黑桃(spade)。两张牌比较时先看数字,数字相同时看花色。要求对输入的扑克牌进行从小到大排序。   输入五张牌(表示黑桃2、红桃3、黑桃3、方块A和梅花J): 2 s 3 h 3 s A d J c

l_z_w99的博客 1667

BMS | 从一串到几百串硬件架构简介

锂电池在生活中越来越多的方面扮演能源的角色,除了大家熟知的电动汽车行业,在一些消费类,工业类电子产品比如手机,电动自行车,电动工具中都有应用,追本溯源今天我们一起来学习下最基础的BMS架构。 1~4串架构 以S8241为代表的无通信/无固件/模拟器件 可实现过充保护、过放保护、过流/短路,参数由器件后缀代码决定;通信类手持设备供电系统;1~4节电池保护板架构 如图使用S-8241系列保护IC,一对充放电MOS管控制充放电的回路的切断和接通,系统供电来自于电芯电压,VM引脚用于检测过...

ningvay的博客 9917

蓝桥杯 算法提高 12-2扑克排序(c语言版详细注释)

试题 算法提高 12-2扑克排序 题目链接 资源限制        时间限制:1.0s 内存限制:256.0MB 问题描述        扑克牌排序:构造扑克牌数组,对扑克牌进行排序。排序原则如下:数字从小到大是2-10、J、Q、K和A,花色从小到大是方块(d...

xyf0209的博客 2876

保姆级教程:在Ubuntu 20.04上搞定pybind11,解决‘找不到头文件’的坑

本文提供了一份详细的Ubuntu 20.04下pybind11配置指南,重点解决常见的'找不到头文件'问题。从环境准备、安装策略到三种专业解决方案(修改CMakeLists.txt、环境变量方案、绝对路径包含),帮助开发者高效搭建C++与Python的桥梁。

weixin_28829325的博客 284

全国青少年信息素养大赛图形化(Scratch)编程考点总结

全国青少年信息素养大赛图形化(Scratch)编程考点总结

伶俐角少儿编程 382

扑克排序(结构体暴力解题)

扑克排序 时间限制: 1Sec 内存限制: 128MB 提交: 213 解决: 107 题目描述 扑克牌排序:构造扑克牌数组,对扑克牌进行排序。排序原则如下:数字从小到大是2-10、J、Q、K和A,花色从小到大是方块(diamond)、梅花(club)、红桃(heart)、黑桃(spade)。两张牌比较时先看数字,数字相同时看花色。要求对输入的扑克牌进行从小到大排序。 输入五张牌(表示黑桃2、红桃3、黑桃3、方块A和梅花J): 2 s 3 h 3 s A d J c 输出结果应为:2 s 3 h 3 s J

m0_52103105的博客 1684

微信小程序(云开发) - 实现微信小程序拼团功能+前后台源码/数据库设计,开团参团、自动成团、微信分享链接URL参与拼团、组团人数/倒计时/实时数据、设置拼团人数限制等(拼团退款处理逻辑、订单同步等)

实现微信小程序云开发拼团功能,云开发小程序--微信拼团设计实现,微信小程序实现秒杀、拼团等效果,微信小程序云开发拼团源码完整版 包含前后台和数据库,拼团商城小程序开发,分销,拼团,社群团购,微信小程序—判断参团人数(设置拼团剩余人数数组)拼多多拼团小程序开发,微信云开发教程怎么实现微信小程序云开发拼团功能?云开发如何实现拼团,拼团小程序怎么弄,微信小程序案例:拼团模块,需要朋友助力,详细源码demo示例,如何做拼团功能,云开发小程序如何做拼团功能,外卖电商拼团,仿拼多多拼团,拼团后退款怎么办,拼团后订单管理

🏆 前端领域优质创作者 4627

题目 1975: 蓝桥杯算法提高VIP-扑克排序

package LanQiao.C_Web.C_1975; import java.util.ArrayList; import java.util.Comparator; import java.util.Scanner; /** * @author Huiex on 2022/3/12 */ public class C1975 { public static void main(String[] args) { Scanner input = new Scanner(S

HUIEX的博客 268

ISP算法:自动白平衡(AWB)

1. 为什么要做白平衡? 人类视觉系统具有颜色恒常性特点,一次人类对物体观察不受光源影响。但是Sensor在不同光线下,物体呈现的颜色不同,在晴朗天空下会偏蓝,在烛光下会偏红。如图: 2.什么是自动白平衡? 为了消除光源对于图像传感器成像的影响,模拟人类视觉系统的颜色恒常性。保证在任何场景下看到的白色是真正的白色。 3. 如何做自动白平衡? 只要乘以一个对角矩阵,便可以进行白平衡...

a200800170331的专栏 1万+

ubuntu20.04搭建QGC4.2编译环境

QGC 4.2ubuntu18.04也可以编译QGC4.2,但是由于GLBC版本较低,无法使用最新版的QTCreator,Ubuntu20.04可以使用最新版QTCreator。

超维空间科技的博客 1万+

蓝桥杯——算法提高 12-2扑克排序-python

问题描述   扑克牌排序:构造扑克牌数组,对扑克牌进行排序。排序原则如下:数字从小到大是2-10、J、Q、K和A,花色从小到大是方块(diamond)、梅花(club)、红桃(heart)、黑桃(spade)。两张牌比较时先看数字,数字相同时看花色。要求对输入的扑克牌进行从小到大排序。   输入五张牌(表示黑桃2、红桃3、黑桃3、方块A和梅花J): 2 s 3 h 3 s A d J c   输出结果应为:2 s 3 h 3 s J c A d数组长度固定为5。 参考思路:https://blog.dotc

Prescu的博客 2965

SonarQube 完整手册(2026 最新)

摘要: SonarQube是一款静态代码分析(SAST)平台,支持20+语言(如Java/Go/Python),提供Bug、漏洞、代码异味等检测,集成DevOps流水线。其架构包含服务端、扫描器和SonarLint插件。2026年四大版本:免费社区版(基础功能)、开发者版(多分支/PR分析)、企业版(合规治理)、数据中心版(高可用集群)。核心功能包括质量门禁(QualityGate)、密钥泄露检测及六大质量指标。部署推荐Docker+PostgreSQL,扫描支持Maven/CLI方式。

SmallBull的博客 670

CSUOJ-1044: 扑克排序

Description 一叠数值不同的扑克牌(不超过13张),每次只能拿最顶端的一张插入到任意位置。至少操作多少次,扑克牌能够从上到下是从大到小的顺序。 Input  多组数据,每组第一行为n,扑克牌个数。第二行n个空格隔开的正整数,(这些数是1~13),为这叠扑克牌从下到上的数值。 Output  每组数据输出一行,至少按规则操作的次数。 Samp

OranKitch的博客 902

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

扑克牌的排序问题

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34416649的博客 527

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

对扑克牌字符串数组进行排序

对于一个扑克牌字符串数组进行排序,这里使用的是一个笨办法,不管字符串是数字还是字母,转为char型数组后对每一个值进行加权,即设置一个映射值。通过对映射值得比较和冒泡排序,实现真实值的排序。代码如下:public class Sort{ public static void main(String[] args){ String[] str = {"2","Q","J","K","10","

jangels的专栏 1784

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

扑克牌排列问题解法

下面代码模拟了一套扑克牌(初始排序A~K,共13张)的操作过程。 操作过程是:  手里拿着这套扑克牌,从前面拿一张放在后面,再从前面拿一张放桌子上,再从前面拿一张放在后面,.... 如此循环操作,直到剩下最后一张牌也放在桌子上。 下面代码的目的就是为了求出最后桌上的牌的顺序。 初始的排列如果是A,2,3...K,则最后桌上的顺序为: [2, 4, 6, 8, 10, Q, A, 5, 9, K,

wanlichangkong666的博客 1569

Java实现蓝桥杯算法提高12-2扑克排序

扑克牌排序 问题描述   扑克牌排序:构造扑克牌数组,对扑克牌进行排序。 排序原则如下:数字从小到大是2-10、J、Q、K和A,花色从小到大是方块(diamond)、梅花(club)、红桃(heart)、黑桃(spade)。 两张牌比较时先看数字,数字相同时看花色。要求对输入的扑克牌进行从小到大排序。 输入五张牌(表示黑桃2、红桃3、黑桃3、方块A和梅花J): 2s3h3sAdJc   输出结果应...

南 墙 1万+

用队列对扑克牌排序

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33895475的博客 540

问题 D: 扑克牌排序(结构体)

问题 D: 扑克牌排序(结构体) 时间限制:1 Sec内存限制:128 MB 提交:666解决:284 [提交][状态][讨论版] 题目描述 自定义结构体表示一张扑克牌,包含类型——黑桃、红桃、梅花、方块、王;大小——2,3,4,5,6,7,8,9,10,J,Q,K,A,小王(用0表示)、大王(用1表示)。输入n,输入n张扑克牌信息,从大到小输出它们的排序结果。 假设扑克牌...

薯饼的博客 4912

扑克牌比较大小、扑克牌排序(Java集合框架)

1.2.8 编写一个扑克类(每张扑克有花色和数值,例如红心A,草花10),将52张扑克牌放到集合中(自己去选择集合类),编写3个方法,并测试方法  方法1.将集合中的所有扑克重新洗牌,并将扑克输出(打印出来即可)  方法2:比较两张扑克牌的大小,如果版面的值相等,则按(黑桃->红心->草花->方块)的顺序进行排列  方法3.将集合中的所有扑克排序(按方块3~方块2,草花3~草花2, 红心

hr786250678的博客 1万+

扑克排序

#include #include using namespace std; int IsPairFive(int *number,int length) { if(number==NULL||length<1) return 0; int flag[14]={0}; int NumZero=0; int numOther=0; for(

年轻人刚入行的时候,要抱定一种三年为奴的思想! 896

Java算法-扑克牌排列

/** * 下面代码模拟了一套扑克牌(初始排序A~K,共13张)的操作过程。 * * 操作过程是: 手里拿着这套扑克牌,从前面拿一张放在后面,再从前面拿一张放桌子上,再从前面拿一张放在后面,.... * * 如此循环操作,直到剩下最后一张牌也放在桌子上。 下面代码的目的就是为了求出最后桌上的牌的顺序。 初始的排列如果是A,2,3...K,则最后桌上的顺序为: * [2, 4, 6,

徐刘根的博客 7195

2015编程之美挑战赛:扑克牌 全排列

第一题:扑克牌 题目连接:http://hihocoder.com/contest/msbop2015round2b/problem/1 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 一副不含王的扑克牌由52张牌组成,由红桃、黑桃、梅花、方块4组牌组成,每组13张不同的面值。现在给定52张牌中的若

AC_Gibson的专栏 1546
上一篇: 题目 1982: [蓝桥杯][算法提高VIP]幸运顾客
下一篇: 题目 2065: [STL训练]{A} + {B}
Valois
博客等级 码龄8年 74粉丝 147原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值