【洛谷算法题】P4414-[COCI2006-2007#2] ABC【入门2分支结构】Java题解

花无缺

👨‍💻博客主页:@花无缺
欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!
本文由 花无缺 原创

收录于专栏 【洛谷算法题】


文章目录

  • 【洛谷算法题】P4414-[COCI2006-2007#2] ABC【入门2分支结构】Java题解
    • 🌏题目描述
    • 🌏输入格式
    • 🌏输出格式
    • 🌏题面翻译
    • 🌏样例 #1
      • 🌙样例输入 #1
      • 🌙样例输出 #1
    • 🌏样例 #2
      • 🌙样例输入 #2
      • 🌙样例输出 #2
    • 💡题解
    • 🌏总结


【洛谷算法题】P4414-[COCI2006-2007#2] ABC【入门2分支结构】Java题解

[COCI2006-2007#2] ABC - 洛谷

🌏题目描述

You will be given three integers A, B and C. The numbers will not be given in that exact order, but we do know that A is less than B and B less than C.
In order to make for a more pleasant viewing, we want to rearrange them in the given order.

🌏输入格式

The first line contains three positive integers A, B and C, not necessarily in that order. All three numbers will be less than or equal to 100.
The second line contains three uppercase letters ‘A’, ‘B’ and ‘C’ (with no spaces between them) representing the desired order.

🌏输出格式

Output the A, B and C in the desired order on a single line, separated by single spaces.

🌏题面翻译

【题目描述】

三个整数分别为 A , B , C A,B,C A,B,C。这三个数字不会按照这样的顺序给你,但它们始终满足条件: A < B < C A < B < C A<B<C。为了看起来更加简洁明了,我们希望你可以按照给定的顺序重新排列它们。

【输入格式】

第一行包含三个正整数 A , B , C A,B,C A,B,C,不一定是按这个顺序。这三个数字都小于或等于 100 100 100。第二行包含三个大写字母 A A A B B B C C C(它们之间没有空格)表示所需的顺序。

【输出格式】

在一行中输出 A A A B B B C C C,用一个 (空格)隔开。

🌏样例 #1

🌙样例输入 #1

1 5 3
ABC

🌙样例输出 #1

1 3 5

🌏样例 #2

🌙样例输入 #2

6 4 2
CAB

🌙样例输出 #2

6 2 4

💡题解

import java.util.Scanner;
import java.util.Arrays;

public class P4414 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 数组 a 保存三个整数
        int[] a = new int[3];
        for (int i = 0; i < a.length; i++) {
            a[i] = in.nextInt();
        }
        // 将整数进行从小到大排序
        Arrays.sort(a);
        // 将三个大写字母作为一个字符串读取
        String str = in.next();
        for (int i = 0; i < a.length; i++) {
            // 根据字母的 ASCII 码和数组 a 的下标的对应关系输出对应的字母
            // A 对应数值最小的数, 也就是 a[0]
            // B 对应数值中间大的数, 也就是 a[1]
            // C 对应数值最小的数, 也就是 a[2]
            System.out.print(a[str.charAt(i) - 65]);
            // 输出空格
            if (i != 2)
                System.out.print(" ");
        }
        in.close();
    }
}

🌏总结

题意:根据三个字母的顺序重新排序三个整数的顺序,字母 A 对应最小的数,字母 B 对应大小为第二的数,字母 C 对应最大的数。

这个题我们其实可以采用一种很直接的方式就是使用选择结构,根据 ABC 顺序的不同,输出 3 个整数的不同的顺序,例如对于样例#1 :“1 5 3”,如果字母是 “ABC”,我们就输出“1 3 5”,如果字母是 “”ACB,我们就输出”1 5 3“,依次类推。

虽然这种方式很直接简单,但是未免太低效了一点。这里我采用了一种更为高效的方法,因为 ABC 三个字符在 ASCII 码表中是连续的,所以他们的 ASCII 码是连续递增的,一个比一个大,所以我们可以将整数存储在数组中,并将字符的 ASCII 码与数组的下标对应起来,那么具体如果对应呢,ABC 的 ASCII 码是依次递增的,数组的下标也是依次递增的,所以我们可以根据这个关系,将数组中的整数按从小到大的顺序排列,然后根据字符顺序输出对应的整数。

再多思考一些,其实以上思路就是数据结构“哈希表”的一个非常简单的应用,如果你不知道什么是“哈希表”,但是对算法很感兴趣,可以尝试搜索“哈希表”;

另外,上题你可能会遇到的语法问题,输入字符串时不要使用 nextLine(),不然会发生异常。如果你说我就想用 next() 不行吗,答案是可以,但是要在这之前加上一条语句:in.nextLine()

作者:花无缺(huawuque404.com)


🌸欢迎关注我的博客:花无缺-每一个不曾起舞的日子都是对生命的辜负~
🍻一起进步-刷题专栏:【洛谷算法题】
🥇往期精彩好文:
📢【CSS选择器全解指南】
📢【HTML万字详解】
你们的点赞👍 收藏⭐ 留言📝 关注✅
是我持续创作,输出优质内容的最大动力!
谢谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/268755.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

股市中的Santa Claus Rally (圣诞节行情)

圣诞节行情 Santa Claus Rally Santa Claus Rally 是指 12 月 25 日圣诞节前后股市的持续上涨这样一个现象。《股票交易员年鉴》的创始人 Yale Hirsch 于 1972 年创造了这个定义&#xff0c;他将当年最后五个交易日和次年前两个交易日的时间范围定义为反弹日期。 根据 CFRA Re…

双向可控硅触发电路图大全

双向可控硅触发电路图一&#xff1a; 为了提高效率&#xff0c;使触发脉冲与交流电压同步&#xff0c;要求每隔半个交流电的周期输出一个触发脉冲&#xff0c;且触发脉冲电压应大于4V&#xff0c;脉冲宽度应大于20us.图中BT为变压器&#xff0c;TPL521-2为光电耦合器&#xff…

靠谱免费的MAC苹果电脑杀毒软件CleanMyMac X2024

您是否曾经为Mac电脑的性能下降、存储空间不足而烦恼&#xff1f;是否希望有一个简单而高效的解决方案来优化您的Mac系统&#xff1f;那么&#xff0c;我向您介绍一款非常出色的工具&#xff1a;CleanMyMac X。它能够轻松处理这些问题&#xff0c;并让您的Mac恢复到最佳状态。 …

多款双向晶闸管调光电路

双向晶闸管调光控制电路原理图 交流调压是把不变的交流电压变换成有效值可调的交流电压&#xff0c;用一只双向晶闸管代替两只反并联晶闸管&#xff0c;可使电路大大简化。被广泛应用于工业加热、灯光控制、感应电动机的调速以及电解电镀的交流侧调压等场合。 用双向晶闸管组…

shell 函数的详细用法及应用

简介 本篇文章从函数的特点开始介绍 &#xff0c;教会小白如何定义函数&#xff0c;学习函数中的各种方法&#xff0c;最后整理了一些实际的应用场景来帮助大家学会如何灵活应用。 文章目录如下&#xff1a; 1. 了解什么是shell函数 1.1. 函数的历史 1.2. 函数有哪些特点 2…

常见的Ubuntu命令30条(二)

Ubuntu命令是指在Ubuntu操作系统中用于执行各种任务和操作的命令行指令。这些命令可以用于管理系统、配置网络、安装软件、浏览文件等。Ubuntu命令通常在终端&#xff08;Terminal&#xff09;应用程序中输入并执行。 history&#xff1a;显示命令行历史记录。grep&#xff1a…

Python - 深夜数据结构与算法之 Graph

目录 一.引言 二.图的简介 1.Graph 图 2.Undirected graph 无向图 3.Directed Graph 有向图 4.DFS / BFS 遍历 三.经典算法实战 1.Num-Islands [200] 2.Land-Perimeter [463] 3.Largest-Island [827] 四.总结 一.引言 Graph 无论是应用还是算法题目在日常生活中比较…

YOLO算法改进7【中阶改进篇】:主干网络C3替换为轻量化网络MobileNetV3

解决问题&#xff1a;YOLOv5主干特征提取网络采用C3结构&#xff0c;带来较大的参数量&#xff0c;检测速度较慢&#xff0c;应用受限&#xff0c;在某些真实的应用场景如移动或者嵌入式设备&#xff0c;如此大而复杂的模型时难以被应用的。首先是模型过于庞大&#xff0c;面临…

reactor的原理与实现

网络模型 前情回顾服务器模型 Reactor和 ProactorReactor模型Proactor模型同步I/O模拟Poractor模型Libevent&#xff0c;libev&#xff0c;libuv优先级事件循环线程安全 前情回顾 网络IO&#xff0c;会涉及到两个系统对象&#xff1a;   一个是用户空间调用的进程或线程   …

企业计算机服务器中了babyk勒索病毒怎么办,babyk勒索病毒解密数据恢复

在数字化的今天&#xff0c;网络安全威胁不断增加&#xff0c;给企业的生产生活带来了严重影响&#xff0c;使得企业不得不重视数据安全问题。近日&#xff0c;云天数据恢复中心接到企业求助&#xff0c;企业的计算机服务器中了babyk勒索病毒&#xff0c;导致企业所有计算机系统…

【开源】基于Vue+SpringBoot的贫困地区人口信息管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 人口信息管理模块2.2 精准扶贫管理模块2.3 特殊群体管理模块2.4 案件信息管理模块2.5 物资补助模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 人口表3.2.2 扶贫表3.2.3 特殊群体表3.2.4 案件表3.2.5 物资补助表 四…

CleanMyMac X2024解锁完整官方版本

作为一款知名的系统清理软件&#xff0c;深受广大用户们的喜爱。它操作简洁&#xff0c;能够实现一键清理&#xff0c;包括但不仅限于清理语言文件、缓存文件、日志文件以及ISO图片缓存等。同时对于用户们比较头疼的iTunes垃圾&#xff0c;也能做到真正地清洁&#xff0c;不留文…

Hadoop(2):常见的MapReduce[在Ubuntu中运行!]

1 以词频统计为例子介绍 mapreduce怎么写出来的 弄清楚MapReduce的各个过程&#xff1a; 将文件输入后&#xff0c;返回的<k1,v1>代表的含义是&#xff1a;k1表示偏移量&#xff0c;即v1的第一个字母在文件中的索引&#xff08;从0开始数的&#xff09;&#xff1b;v1表…

学习在UE中通过Omniverse实现对USD文件的Live-Sync(实时同步编辑)

目标 前一篇 学习了Omniverse的一些基础概念。本篇在了解这些概念的基础上&#xff0c;我想体验下Omniverse的一些具体的能力&#xff0c;特别是 Live-Sync (实时同步) 相关的能力。 本篇实践了使用Omniverse的力量在UE中建立USD文件的 Live-Sync 编辑。由于相关的知识我是从…

Settings中电池选项-Android13

Settings中电池选项-Android13 1、设置中界面2、电池计算2.1 充电时间计算2.1.1 BatteryUsageStats获取2.1.2 BatteryStatsImpl计算 2.2 电池剩余使用时间2.2.1 Estimate获取2.2.2 BatteryStatsImpl计算 3、电池信息来源4、命令模拟* 日志 [电池]Android 9.0 电池未充电与充电字…

JVM介绍

程序计数器&#xff1a; 程序计数器属于线程的私有内存区域&#xff0c;记录当前线程的运行位置&#xff0c;以供多线程运行时上下文切换&#xff0c;字节码解释器通过程序计数器的增减来执行顺序分支循环等结构。独立于堆之外&#xff0c;因此程序计数器是唯一不会导致OutOfMe…

大数据深度解析NLP文本摘要技术:定义、应用与PyTorch实战

文章目录 大数据深度解析NLP文本摘要技术&#xff1a;定义、应用与PyTorch实战1. 概述1.1 什么是文本摘要&#xff1f;1.2 为什么需要文本摘要&#xff1f; 2. 发展历程2.1 早期技术2.2 统计方法的崛起2.3 深度学习的应用2.4 文本摘要的演变趋势 3. 主要任务3.1 单文档摘要3.2 …

SLAM算法与工程实践——SLAM基本库的安装与使用(6):g2o优化库(4)构建g2o的边

SLAM算法与工程实践系列文章 下面是SLAM算法与工程实践系列文章的总链接&#xff0c;本人发表这个系列的文章链接均收录于此 SLAM算法与工程实践系列文章链接 下面是专栏地址&#xff1a; SLAM算法与工程实践系列专栏 文章目录 SLAM算法与工程实践系列文章SLAM算法与工程实践…

[原创][R语言]股票分析实战[4]:周级别涨幅趋势的相关性

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX QQ联系: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、D…

Redis数据库入门学习(下载与安装、常用命令、在Java中操作Redis)

简介 下载与安装 数据类型 常用命令 1.字符串操作命令 2.哈希操作命令 3.列表操作命令 push是将元素总是插入到第一个 0表示第一个&#xff0c;1表示第二个。-1表示倒数第一个&#xff0c;-2表示倒数第二个。当前命令的意思是第一个到倒数第一个&#xff0c;即就是全部元素 rpo…