华为OD机试 - N个选手比赛前三名、比赛(Java 2024 E卷 100分)

在这里插入图片描述

华为OD机试 2024E卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(E卷+D卷+A卷+B卷+C卷)》。

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

一个有N个选手参加的比赛,选手编号为1~N(3 <= N <= 100),有M(3 <= M <= 10)个评委对选手进行打分。

打分规则为每个评委对选手打分,最高为10分,最低为1分。

请计算得分最多的3位选手的编号。

如果得分相同,得分高分值最多的选手排名靠前。

(10分数量相同,则比较9分的数量,以此类推,用例中不会出现多个选手得分完全相同的情况。)

二、输入描述

第一行为半角逗号分割的两个正整数,第一个数字表示M(3 <= M <= 10)个评委,第二个数字表示N(3 <= N <= 100)个选手。

第2到M+1行为半角逗号分割的整数数组,表示评委对每个选手的打分,0号下标数字表示1号选手分数,1号下标数字表示2号选手分数,依次类推。

三、输出描述

选手前3名的编号。

注意:

若输入为异常,输出-1,如M、N、打分不在生范围内。

四、测试用例

测试用例1:

1、输入

4,5
10,6,9,7,6
9,10,6,7,5
8,10,6,5,10
9,10,8,4,9

2、输出

2,1,5

3、说明

第一行代表有4个评委,5个选手参加比赛 矩阵代表是4*5,每个数字是选手的编号,每一行代表一个评委对选手的打分排序, 2号选手得分36分排第1,1号选手36分排第2,5号选手30分(2号10分值有3个,1号10分值只有1个,所以2号排第一)

测试用例2:

1、输入

2,5
7,3,5,4,2
8,5,4,4,3

2、输出

-1

3、说明

只有2个评委,要求最少为3个评委

五、解题思路

  1. 遍历每个评委的打分,将每个选手的分数累加到 totalScore 中,并更新相应的 scoreCounts。
  2. 总得分从高到低。
  3. 若总得分相同,比较10分的数量,数量多的排名靠前;若10分数量相同,比较9分的数量,以此类推。
  4. 取排序后的前3个选手的 id,用逗号分隔输出。
  5. 如果输入不满足题目要求的格式或范围,直接输出 -1。

六、Java算法源码

public class OdTest01 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);try {// 读取第一行并解析M和Nif (!scanner.hasNextLine()) {System.out.println("-1");return;}String firstLine = scanner.nextLine().trim();String[] mn = firstLine.split(",");if (mn.length != 2) { // 确保有两个数字System.out.println("-1");return;}int M = Integer.parseInt(mn[0].trim());int N = Integer.parseInt(mn[1].trim());// 验证M和N的范围if (M < 3 || M > 10 || N < 3 || N > 100) {System.out.println("-1");return;}// 初始化选手列表List<Contestant> contestants = new ArrayList<>();for (int i = 1; i <= N; i++) {contestants.add(new Contestant(i));}// 读取M行打分for (int i = 0; i < M; i++) {if (!scanner.hasNextLine()) { // 如果打分行不足M行System.out.println("-1");return;}String scoreLine = scanner.nextLine().trim();String[] scoresStr = scoreLine.split(",");if (scoresStr.length != N) { // 每行必须有N个分数System.out.println("-1");return;}for (int j = 0; j < N; j++) {int score = Integer.parseInt(scoresStr[j].trim());// 验证分数范围if (score < 1 || score > 10) {System.out.println("-1");return;}contestants.get(j).addScore(score); // 为对应选手添加分数}}// 确保没有多余的打分行// 可以选择忽略,或进一步验证,视具体需求// 排序选手Collections.sort(contestants, new Comparator<Contestant>() {@Overridepublic int compare(Contestant c1, Contestant c2) {if (c2.totalScore != c1.totalScore) {return c2.totalScore - c1.totalScore; // 总得分降序}// 如果总得分相同,比较分数分布for (int i = 0; i < 10; i++) { // 从10分到1分if (c2.scoreCounts[i] != c1.scoreCounts[i]) {return c2.scoreCounts[i] - c1.scoreCounts[i]; // 分数数量降序}}return 0; // 如果完全相同,保持原有顺序(题目保证不会有完全相同的情况)}});// 取前3名List<Integer> top3 = new ArrayList<>();for (int i = 0; i < 3; i++) {top3.add(contestants.get(i).id);}// 输出结果,用逗号分隔StringBuilder sb = new StringBuilder();for (int i = 0; i < top3.size(); i++) {sb.append(top3.get(i));if (i != top3.size() - 1) {sb.append(",");}}System.out.println(sb.toString());} catch (Exception e) {// 捕获任何异常,输出-1System.out.println("-1");} finally {scanner.close(); // 关闭扫描器}}
}// 定义选手类,包含编号、总得分和分数分布
class Contestant {int id; // 选手编号int totalScore; // 总得分int[] scoreCounts; // 分数分布,scoreCounts[0]表示10分的数量,scoreCounts[9]表示1分的数量public Contestant(int id) {this.id = id;this.totalScore = 0;this.scoreCounts = new int[10]; // 初始化分数分布数组}// 方法:添加一个分数public void addScore(int score) {this.totalScore += score; // 累加总得分if (score >=1 && score <=10) {this.scoreCounts[10 - score] += 1; // 更新对应分数的数量}}
}

七、效果展示

1、输入

4,2
8,5
5,6
10,4
8,9

2、输出

-1

3、说明

只有2个评委,要求最少为3个评委


🏆下一篇:华为OD机试 - 简易内存池 - 逻辑分析(Java 2024 E卷 200分)

🏆本文收录于,华为OD机试(JAVA)真题(E卷+D卷+A卷+B卷+C卷)

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

恶意AI大模型的兴起将改变网络安全

LLM 的恶意版本&#xff08;如 ChatGPT 的黑暗变体&#xff09;的兴起正在通过使用更复杂和自动化的攻击来升级网络战。 这些模型可以生成令人信服的网络钓鱼电子邮件、传播虚假信息并制作有针对性的社会工程消息。 所有这些非法功能都对在线安全构成了重大威胁&#xff0c;并加…

水果识别系统Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练

一、介绍 水果识别系统。本项目使用Python作为主要编程语言&#xff0c;基于TensorFlow搭建卷积神经网络算法模型&#xff0c;通过对收集到的5种常见的水果&#xff08;圣女果、梨、芒果、苹果、香蕉&#xff09;等图片数据集进行训练&#xff0c;最终得到一个识别精度较高的模…

【开源免费】基于SpringBoot+Vue.JS体育馆管理系统(JAVA毕业设计)

本文项目编号 T 048 &#xff0c;文末自助获取源码 \color{red}{T048&#xff0c;文末自助获取源码} T048&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析5.4 用例设计 六、核…

Redis发布和订阅

Redis 发布订阅 (pub/sub) 是一种消息通信模式&#xff1a;发送者 (pub) 发送消息&#xff0c;订阅者(sub) 接收消息 可以实现进程间的消息传递。这种模式非常适用于实时消息传递、事件通知和消息分发等场景 Redis可以实现消息中间件MQ的功能&#xff0c;通过发布订阅实现消息…

Qwen2.5 本地部署的实战教程

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于大模型算法的研究与应用。曾担任百度千帆大模型比赛、BPAA算法大赛评委,编写微软OpenAI考试认证指导手册。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。授权多项发明专利。对机器学…

Github 2024-09-23 开源项目周报 Top15

根据Github Trendings的统计,本周(2024-09-23统计)共有15个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目6C++项目3C项目3HTML项目2PowerShell项目1TypeScript项目1JavaScript项目1Blade项目1PHP项目1Bootstrap 5: Web上开发响应式、移动优…

李彦宏最新内部讲话曝光,谈大模型三大认知误区:榜单不代表实力,智能体还是非共识

图片来源&#xff1a;百度 近半年多来&#xff0c;AI行业在经历飞速增长后开始进入冷静期。业内出现了对AI的担忧声音&#xff1a;大模型技术是否已经接近天花板&#xff1f;大模型之间是否没有技术壁垒&#xff1f;闭源模型相对开源模型的优势是什么&#xff1f;AI应用的发展…

遗传算法与深度学习实战(14)——进化策略详解与实现

遗传算法与深度学习实战&#xff08;14&#xff09;——进化策略详解与实现 0. 前言1. 进化策略1.1 进化策略原理1.2 将进化策略应用于函数逼近 2. 实现进化策略小结系列链接 0. 前言 进化策略 (Evolutionary Strategies, ES) 是进化计算和遗传方法的扩展&#xff0c;增加了控…

SSM整合步骤

目录 一、Mybatis整合Spring 1、整合后的maven坐标 2、核心配置文件 3、pojo、mapper、service配置 4、单测 二、整合SpringMVC 1、引入springMVC的坐标并配置tomcat 2、核心配置文件 3、controller配置 4、启动项目并测试 SSM SpringMVC Spring Mybatis 整合顺序&#xff1…

动态线程池(六)

动态线程池 AlarmManager报警管理器 AlarmManager的doAlarmAsync AlarmLimiter警报限流器 AlarmCounter警报计数器 checkThreadhole报警阈值检查 NotifyHelper alarm_keys 向notifyItems填充platformIds 初始化通知 刷新通知 NotifyFilterBuilder 同步 拒绝 RejectedAware 三…

【Python学习手册(第四版)】学习笔记24-高级模块话题

个人总结难免疏漏&#xff0c;请多包涵。更多内容请查看原文。本文以及学习笔记系列仅用于个人学习、研究交流。 本来计划中秋发布几篇文章&#xff0c;结果阳了&#xff0c;发烧、头疼、咽疼&#xff0c;修养了近一周&#xff0c;还没好完。希望大家都能有个好身体&#xff0…

【题解】—— LeetCode一周小结38

&#x1f31f;欢迎来到 我的博客 —— 探索技术的无限可能&#xff01; &#x1f31f;博客的简介&#xff08;文章目录&#xff09; 【题解】—— 每日一道题目栏 上接&#xff1a;【题解】—— LeetCode一周小结37 16.公交站间的距离 题目链接&#xff1a;1184. 公交站间的距…

vscode调试配置文件,微软官方

vscode调试配置文件&#xff0c;微软官方 选择对应的文件夹 在readme中找到配置 在vscode中&#xff0c;点击创建launch.json文件 这时在文件夹中会多一个文件 可以愉快的使用调试功能了

《〈妈妈朋友的儿子〉:一场别样的浪漫与成长之旅》

《〈妈妈朋友的儿子〉&#xff1a;一场别样的浪漫与成长之旅》 最近&#xff0c;一部名为《妈妈朋友的儿子》的韩剧&#xff0c;如同一颗闪耀的新星&#xff0c;在影视的天空中绽放出独特的光芒&#xff0c;吸引了众多观众的目光。今天&#xff0c;就让我们一同走进这个充满温情…

多模态论文串讲-学习笔记(上)

入门参考&#xff1a;跟着chatgpt一起学|多模态入门-CSDN博客 学习参考&#xff1a;多模态论文串讲上【论文精读46】_哔哩哔哩_bilibili&#xff0c;强烈推荐这个博主啊&#xff0c;感觉比沐神讲的还要清楚&#xff0c;非常喜欢。 本文介绍只使用transformer encoder的方法&a…

【软件工程】系统流程图

一、定义 二、常用符号 例题 选择题

空栈压数 - 华为OD统一考试(E卷)

2024华为OD机试&#xff08;E卷D卷C卷&#xff09;最新题库【超值优惠】Java/Python/C合集 题目描述 向一个空栈压入正整数&#xff0c;每当压入一个整数时&#xff0c;执行以下规则&#xff08;设&#xff1a;栈顶至栈底整数依次编号为 $n_1, n_2, \dots, n_x $&#xff0c;其…

Tile View Kanban Board平铺视图和看板

Goto 数据网格和视图入门 平铺视图&#xff08;TileView 类&#xff09;将数据记录显示为平铺。此视图类型可以以任何自定义方式排列多个元素&#xff08;bound 和 unbound&#xff09;。用户可以按如下方式编辑瓦片&#xff1a; 使用模态 Edit Form。利用 HTML-CSS 平铺模板…

MySQL(七)——事务

文章目录 事务事务的概念事务的ACID特性事务的语法查看存储引擎查看自动提交参数和设置手动事务操作保存点 隔离级别与并发事务问题隔离级别并发事务问题 事务 事务的概念 事务&#xff08;Transaction&#xff09;是数据库管理系统中执行过程中的一个逻辑单位&#xff0c;由…

高效打造知识图谱,使用LlamaIndex Relik实现实体关联和关系抽取

大家好&#xff0c;文本信息转化为知识图谱的技术&#xff0c;自问世以来一直是研究界的宠儿。大型语言模型&#xff08;LLMs&#xff09;的兴起让这个领域受到更多关注&#xff0c;但LLMs的成本之高令人却步。然而通过对小型模型微调优化&#xff0c;可以找到一种更经济高效的…