【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 身高差值排序(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员

✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解

💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导

👏 感谢大家的订阅➕ 和 喜欢💗

📎在线评测链接

https://app5938.acapp.acwing.com.cn/contest/2/problem/OD1058

🌍 评测功能需要 ⇒ 订阅专栏 ⇐ 后私信联系清隆解锁~

🍓OJ题目截图

在这里插入图片描述

文章目录

    • 📎在线评测链接
    • 🍓OJ题目截图
    • 🪐 身高差值排序
      • 问题描述
      • 输入格式
      • 输出格式
      • 样例输入
      • 样例输出
      • 数据范围
      • 题解
      • 参考代码

🪐 身高差值排序

问题描述

K小姐和她的同学们身高都不太一样。她想按照每个同学与自己的身高差值的绝对值进行从小到大排序。如果两个同学与 K小姐身高差值的绝对值相等,那么身高较矮的同学排在前面。现在请你帮助 K小姐实现这个身高差值排序。

输入格式

第一行包含两个正整数 H H H N N N,其中 0 < H < 200 0 < H < 200 0<H<200 表示 K小姐的身高, 0 < N < 50 0 < N < 50 0<N<50 表示其他同学的人数。

第二行包含 N N N 个正整数 H 1 H_1 H1 ~ H N H_N HN,表示其他每个同学的身高,满足 0 < H i < 200 0 < H_i < 200 0<Hi<200 ( 1 ≤ i ≤ N 1 \le i \le N 1iN),且所有的 H i H_i Hi 互不相同。

输出格式

输出身高差值排序后的结果,每个数之间用一个空格隔开。

样例输入

100 10
95 96 97 98 99 101 102 103 104 105

样例输出

99 101 98 102 97 103 96 104 95 105

数据范围

  • 0 < H < 200 0 < H < 200 0<H<200
  • 0 < N < 50 0 < N < 50 0<N<50
  • 0 < H i < 200 0 < H_i < 200 0<Hi<200 ( 1 ≤ i ≤ N 1 \le i \le N 1iN)

题解

本题主要考察了对结构体的使用以及自定义排序规则。我们可以将每个同学的身高 H i H_i Hi 与 K小姐的身高差值的绝对值 ∣ H − H i ∣ |H-H_i| HHi 作为第一关键字,身高 H i H_i Hi 作为第二关键字,构建结构体并自定义排序规则,然后将所有同学按照这个规则进行排序即可。

对于 C++ 语言,我们可以使用 pair<int,int> 来存储 ( ∣ H − H i ∣ , H i ) (|H-H_i|,H_i) (HHi,Hi),然后对 pair 进行排序;
对于 Java 语言,我们可以自定义一个类 Student,然后实现 Comparable 接口,重写 compareTo 方法来定义排序规则;
对于 Python 语言,我们可以使用 (|H-H_i|,H_i) 作为元组直接进行排序。

最后将排序后的结果依次输出即可。

参考代码

  • Python
h, n = map(int, input().split())
heights = list(map(int, input().split()))
diffs = [(abs(h - x), x) for x in heights]
diffs.sort()
print(' '.join(map(str, [x[1] for x in diffs])))
  • Java
import java.io.*;
import java.util.*;class Student implements Comparable<Student> {int diff;int height;public Student(int diff, int height) {this.diff = diff;this.height = height;}@Overridepublic int compareTo(Student other) {if (this.diff != other.diff) {return Integer.compare(this.diff, other.diff);} else {return Integer.compare(this.height, other.height);}}
}public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int H = sc.nextInt();int N = sc.nextInt();Student[] students = new Student[N];for (int i = 0; i < N; i++) {int height = sc.nextInt();students[i] = new Student(Math.abs(H - height), height);}Arrays.sort(students);for (Student student : students) {System.out.print(student.height + " ");}}
}
  • Cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;int main() {int h, n;cin >> h >> n;vector<pair<int, int>> students;for (int i = 0; i < n; i++) {int height;cin >> height;students.emplace_back(abs(h - height), height);}sort(students.begin(), students.end());for (auto student : students) {cout << student.second << " ";}return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

22种常用设计模式示例代码

文章目录 创建型模式结构型模式行为模式 仓库地址https://github.com/Xiamu-ssr/DesignPatternsPractice 参考教程 refactoringguru设计模式-目录 创建型模式 软件包复杂度流行度工厂方法factorymethod❄️⭐️⭐️⭐️抽象工厂abstractfactory❄️❄️⭐️⭐️⭐️生成器bui…

如何配置node.js环境

文章目录 step1. 下载node.js安装包step2. 创建node_global, node_cache文件夹step3.配置node环境变量step3. cmd窗口检查安装的node和npm版本号step4. 设置缓存路径\全局安装路径\下载镜像step5. 测试配置的nodejs环境 step1. 下载node.js安装包 下载地址&#xff1a;node.js…

[程序员] openstack: openvswitch: firewall丢包

最近看到一个老问题&#xff1a;说openvswitch提供的防火墙策略&#xff0c;会导致网络性能下降&#xff0c;而且有丢包。 https://bugzilla.redhat.com/show_bug.cgi?id1559604 the firewalling changed and the firewall_driver is now ‘openvswitch’ ([security_groups…

application/x-www-form-urlencoded和json的区别

application/x-www-form-urlencoded 和 application/json 是两种不同的数据格式&#xff0c;常用于HTTP请求中传递数据。 它们各自的特点和使用场景如下&#xff1a; 1. application/x-www-form-urlencoded •特点&#xff1a;这是一种传统的表单提交时采用的编码类型&#x…

24年新版!这份Excel+Python飞速搞定数据分析手册,简直可以让Excel飞起来

前⾔ 微软在 UserVoice 上运营着⼀个反馈论坛&#xff0c;每个⼈都可以在这⾥提交新点⼦供他⼈投票。票数最⾼的功能请求是“将 Python 作为Excel 的⼀门脚本语⾔”&#xff0c;其得票数差不多是第⼆名的两倍。尽管⾃2015 年这个点⼦发布以来并没有什么实质性进展&#xff0c;…

Java基础学习-算术运算符-案例

目录 运算符&#xff1a; 表达式&#xff1a; 简单练习&#xff1a; 案例&#xff1a;拆分 数字运算注意点 隐式转换&#xff08;自动类型提升&#xff09;&#xff1a; 强制转换&#xff1a; 字符串操作&#xff1a; 字符&#xff1a; 运算符&#xff1a; 对字面量或…

交叉编译三方库时不生成动态库

交叉编译三方库时不生成动态库 在x86架构下交叉编译liblog4cpp库时&#xff0c;x86执行./configure && make 可以正常生成动态库&#xff0c;但是交叉编译时执行./configure --hostarm时只生成了.a的静态库&#xff0c;查看config.log,进一步发现“ checking if libto…

为数据安全护航,袋鼠云在数据分类分级上的探索实践

在大数据时代&#xff0c;数据具有多源异构的特性&#xff0c;且价值各异&#xff0c;企业需依据数据的重要性、价值指数等予以区分&#xff0c;以利采取不同的数据保护举措&#xff0c;避免数据泄露。故而&#xff0c;数据分类分级管理属于数据安全保护中极为重要的环节之一。…

Coco Test Engine:代码覆盖率分析的新时代

本文翻译自&#xff1a;Coco Test Engine – The New Era of Code Coverage Analysis 原文作者&#xff1a;Qt Group首席软件工程师Sbastien Fricker 审校&#xff1a;Felix Zhang 我们的Coco 7重大更新带来了一个长期以来备受期待的功能——测试数据生成&#xff08;即Coco …

springboot mybatis mysql新增后返回id(ai生成)

在Spring Boot项目中使用MyBatis和MySQL时&#xff0c;若想在插入数据后返回生成的ID&#xff0c;可以在Mapper接口的插入方法上使用Options注解&#xff0c;并设置useGeneratedKeys属性为true&#xff0c;同时指定keyProperty为实体类中对应ID的属性名。 以下是一个简单的示例…

对角线法则的由来

目录 一、前言 二、对角线法则 三、行列式的定义 1. 行列式的定义 2. (全)排列 3. 逆序数 四、由全排列逆序数 到 对角线法则规律 ​编辑 五、参考书目 一、前言 仅限于个人理解&#xff0c;对错没有查证。 二、对角线法则 提起对角线法则&#xff0c;我们更倾向于他是…

Rocky Linux 9.4 部署Zabbix 7.0

文章目录 Zabbix基本概念zabbix介绍zabbix特性zabbix结构 安装Zabbix主机名配置配置Zabbix-Server(1)禁用EPEL提供的Zabbix软件包(2)安装Zabbix Server、Web前端、Agent(3)创建初始数据库(4)Zabbix server配置数据库(5)为Zabbix前端配置PHP(6)启动Zabbix server和agent进程(7)放…

js正则表达式将一个字符串拆分成3个一组,每组添加,

let a123456789.9876543210a.toString().replace(/\B(?(\d{3})(?!\d))/g, ",")//输出结果&#xff1a;123,456,789.9,876,543,210num.toString(): 将数字 num 转换为字符串。 .replace(/\B(?(\d{3})(?!\d))/g, ,): .replace() 是字符串对象的方法&#xff0c;用…

RK3588 代码中导入torch报错

RK3588 代码中导入torch报错 使用RK3588测试官方的YOLOv8,出现下面的问题 发现是dfl函数中导入torch的时候产生的&#xff0c;但是我在python终端上执行导入torch并没有发生报错 Traceback (most recent call last):File "infer.py", line 243, in <module>b…

Linux进程概念(个人笔记)

Linux进程概念 1.冯诺依曼体系结构2.操作系统&#xff08;先描述&#xff0c;再组织&#xff09;3.进程3.1查看进程的方式3.2通过系统调用获取进程标识符3.4查看进程中常见字段状态的指令3.3fork创建子进程3.3.1fork的原理 3.4进程状态3.5进程优先级3.5.1Linux内核的调度队列与…

Java代码中如何在JSONObject按put顺序排序

编写java代码时&#xff0c;发现在JSONObject 对象中put 一些数据后&#xff0c;输出JSONObject对象信息时&#xff0c;展示的json信息中&#xff0c;排序发生了变化。 以下为部分代码&#xff1a; JSONObject expDataJson new JSONObject();JSONObject expJson new JSONObj…

如何基于Redis实现消息队列

Redis可以用作消息队列的实现方案,有以下几种实现方案: 一 列表(List)作为消息队列 List如何实现消息队列,详情见这篇文章:基于Redis List实现消息队列 二 发布/订阅(Pub/Sub) 发布/订阅是一种消息通信模式,其中消息生产者(发布者)发送消息,而消息消费者(订阅者…

【教师资格证考试综合素质——法律专项】教师法笔记以及练习题

《中华人民共和国教师法》 一&#xff0e;首次颁布&#xff1a;第一部《中华人民共和国教师法》于1993年10月31日由第八届全国人民代表大会常务委员会第四次会议通过&#xff0c;1994年1月1日起执行。 二&#xff0e;历次修改&#xff1a;2009年8月27日第十一届全国人民代表…

RK3568技术笔记十二 Android编译方法

Android源码说明 Android源码在SAIL-RK3568开发板光盘->Android->源代码中&#xff0c;由于android源码太大&#xff0c;在进行压缩时&#xff0c;进行分包压缩&#xff0c;因此有4部分&#xff0c;如图所示&#xff1a; 进行解压时&#xff0c;需将4部分压缩包放置同一…

vue实现全屏screenfull-封装组件

1. 安装依赖 npm install --save screenfull 2. 引用 import screenfull from "screenfull" 3.封装fullScreen/index: <template><div><el-tooltip v-if"!content" effect"dark" :content"fullscreenTips" placement&…