【华为OD机试真题】232、统计射击比赛成绩 | 机试真题+思路参考+代码分析(C++)

统计射击比赛成绩 已支持(Java & JS & Python & C & C++),考察:排序 阅读详情

题目描述

给定一个射击比赛成绩单,包含多个选手若干次射击的成绩分数,请对每个选手按其最高3个分数之和进行降序排名,输出降序排
名后的选手ID序列
条件如下:
1.一个选手可以有多个射击成绩的分数,且次序不固定
2.如果一个选手成绩少于3个,则认为选手的所有成绩无效,排名忽略该选手
3.如果选手的成绩之和相等,则成绩之和相等的选手按照其ID降序排列

输入输出

输入
第一行:一个整数N,表示该场比赛总共进行了N次射击,产生N个成绩分数(2<=N<=100)
第二行:一个长度为N整数序列,表示参与每次射击的选手D(0<=ID<=99)
第三行:一个长度为N整数序列,表示参与每次射击的选手对应的成绩(0<=成绩<=100)
输出
符合题设条件的降序排名后的选手ID序列

样例1:

输入
13
3,3,7,4,4,4,4,7,7,3,5,5,5
53,80,68,24,39,76,66,16,100,55,53,80,55
输出
5,3,7,4
说明:
该场射击比赛进行了13次,参赛的选手为3,4,5,7
● 3号选手成绩: 53,80,55, 最高3个成绩的和为: 80+55+53=188
● 4号选手成绩: 24,39,76,66, 最高3个成绩的和为: 76+66+39=181
● 5号选手成绩: 53,80,55, 最高3个成绩的和为: 80+55+53=188
● 7号选手成绩: 68,16,100,最高3个成绩的和为: 100+68+16=184
比较各个选手最高3个成绩的和,有3号=5号>7号>4号,由于3号和5号成绩相等且1D号5>3,所以输出为: 5,3,7,4

样例2

输入
15
1,1,1,2,2,2,3,4,3,3,5,5,3,3,5
80,90,70,85,95,75,100,65,90,80,75,95,70,80,90
输出
3,5,2,1

🧠C++ 题目理解与思路
1、定义选手结构体 Player

  • 结构体成员变量:
    • int id;: 选手的ID。
    • int total;: 选手的最高三个成绩的总和。
    • 构造函数:不需要显式的构造函数,因为结构体成员变量可以直接初始化。
    • 成员函数 calculateSumTopThree:没有显式定义,但在代码中通过排序和求和的方式实现了该功能。

2、自定义排序比较函数 compare

  • 用于比较两个选手的最高三个成绩之和。
  • 比较规则:
    • 如果两个选手的总分不同,则总分高的选手排在前面。
    • 如果两个选手的总分相同,则ID大的选手排在前面。

3、辅助函数 splitStringToInt

  • 将输入的逗号分隔的字符串转换为整数数组。
  • 实现步骤:
    • 遍历字符串中的每个字符。
    • 如果遇到逗号 ,,则将临时字符串 temp 转换为整数并添加到结果数组 result 中,然后清空 temp。
    • 如果遇到其他字符,则将其拼接到 temp 中。
    • 处理最后一个数字,将 temp 转换为整数并添加到结果数组 result 中。

4、主函数逻辑

  • 读取射击次数 N:

    • 使用 cin >> N; 读取射击次数。
    • 使用 cin.ignore(); 忽略换行符,防止影响后续输入。
  • 读取选手ID序列:

    • 使用 getline(cin, ids_str); 读取选手ID序列。
    • 使用 splitStringToInt(ids_str) 将ID序列转换为整数数组 ids。
  • 读取分数序列:

    • 使用 getline(cin, scores_str); 读取分数序列。
    • 使用 splitStringToInt(scores_str) 将分数序列转换为整数数组 scores
  • 记录每个选手的成绩:

    • 使用 unordered_map<int, vector> id_to_scores 哈希表
    • 记录每个选手的所有成绩。
    • 遍历 ids 和 scores 数组,将每个成绩添加到对应ID的列表中。
  • 计算每个选手的最高三个成绩之和:

    • 创建一个 vector players 数组来存储每个选手的有效信息。
    • 遍历 id_to_scores 哈希表,对每个选手进行如下操作:
      • 如果该选手的成绩数量少于3个,则忽略该选手。
      • 如果该选手的成绩数量大于等于3个,则对其进行降序排序,并计算最高三个成绩的总和。
      • 将选手ID和总分存储到 players 数组中。
  • 排序选手:

    • 使用 sort(players.begin(), players.end(), compare); 按照总分降序排列选手,总分相同时按照ID降序排列。
  • 输出结果:

    • 遍历 players 数组,输出选手ID,用逗号分隔。
    • 使用 bool first = true; 来控制输出格式,确保第一个ID前没有逗号。

✅ C++ 函数OJ版

#include <iostream>
#include <vector>
#include <string>
#include <unordered_map>
华为OD机试解析:统计射击比赛成绩并排序的多语言实现及算法详解 通过C++、Java、JavaScript三种语言的实现,我们详细解析了这道华为OD机试的射击比赛成绩排序问题。在解题过程中,我们充分利用了数组、哈希表等数据结构,实现了对成绩的分组和排序。同时,我们也确保了在不同语言中的实现具有一致性和效率。 阅读详情

相关推荐

【华为OD机试真题 Java语言】232、统计射击比赛成绩 | 机试真题+思路参考+代码分析

>给定一 个射击比赛成绩单,包含多个选手若干次射击的成绩分数,请对每个选手按其最高3个分数之和进行降序排名,输出降序排名后的选手ID序列 >  条件如下:   1、一个选手可以有多个射击成绩的分数,且次序不固定 2、如果一个选手成绩少于3个,则认为选手的所有成绩无效,排名忽略该选手 3、如果选手的成绩之和相等,则成绩之和相等的选手按照其ID降序排列

KJ.JK 1151

【华为OD机试真题 2025B卷】232、统计射击比赛成绩 | 机试真题+思路参考+代码分析 (C++、Java、Py、C语言、JS)

🎃题目描述 >给定一 个射击比赛成绩单,包含多个选手若干次射击的成绩分数,请对每个选手按其最高3个分数之和进行降序排名,输出降序排名后的选手ID序列 >  条件如下:   1、一个选手可以有多个射击成绩的分数,且次序不固定 2、如果一个选手成绩少于3个,则认为选手的所有成绩无效,排名忽略该选手 3、如果选手的成绩之和相等,则成绩之和相等的选手按照其ID降序排列

KJ.JK 1万+

【华为OD机试真题】232、统计射击比赛成绩 | 机试真题+思路参考+代码分析(C语言、C++、Java、Py、JS)

题目描述 >给定一 个射击比赛成绩单,包含多个选手若干次射击的成绩分数,请对每个选手按其最高3个分数之和进行降序排名,输出降序排名后的选手ID序列 >  条件如下:   1、一个选手可以有多个射击成绩的分数,且次序不固定 2、如果一个选手成绩少于3个,则认为选手的所有成绩无效,排名忽略该选手 3、如果选手的成绩之和相等,则成绩之和相等的选手按照其ID降序排列

KJ.JK 1635

【华为OD机试真题 C语言】232、统计射击比赛成绩 | 机试真题+思路参考+代码分析

给定一 个射击比赛成绩单,包含多个选手若干次射击的成绩分数,请对每个选手按其最高3个分数之和进行降序排名,输出降序排名后的选手ID序列 >  条件如下:   1、一个选手可以有多个射击成绩的分数,且次序不固定 2、如果一个选手成绩少于3个,则认为选手的所有成绩无效,排名忽略该选手 3、如果选手的成绩之和相等,则成绩之和相等的选手按照其ID降序排列

KJ.JK 2677

【华为OD机试真题 JS语言】232、统计射击比赛成绩 | 机试真题+思路参考+代码分析

>给定一 个射击比赛成绩单,包含多个选手若干次射击的成绩分数,请对每个选手按其最高3个分数之和进行降序排名,输出降序排名后的选手ID序列 >  条件如下:   1、一个选手可以有多个射击成绩的分数,且次序不固定 2、如果一个选手成绩少于3个,则认为选手的所有成绩无效,排名忽略该选手 3、如果选手的成绩之和相等,则成绩之和相等的选手按照其ID降序排列

KJ.JK 1179

【华为OD机试真题】232、统计射击比赛成绩 | 机试真题+思路参考+代码分析(C++、Java、Py、JS)

题目描述 >给定一 个射击比赛成绩单,包含多个选手若干次射击的成绩分数,请对每个选手按其最高3个分数之和进行降序排名,输出降序排名后的选手ID序列 >  条件如下:   1、一个选手可以有多个射击成绩的分数,且次序不固定 2、如果一个选手成绩少于3个,则认为选手的所有成绩无效,排名忽略该选手 3、如果选手的成绩之和相等,则成绩之和相等的选手按照其ID降序排列

正在更新最新华为OD机试2025B卷,提供OJ在线刷题 1999

【华为OD机试真题 2025C卷】232、统计射击比赛成绩 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS)

【华为OD机试真题 2025C卷】232、统计射击比赛成绩 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2025e卷,od机试,2025E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2025华为od,如何备战

正在更新最新华为OD机试2025B卷,提供OJ在线刷题 1468

华为OD机试 - 统计射击比赛成绩(Java 双机位C卷 100分)

给定一个射击比赛成绩单,包含多个选手若干次射击的成绩分数,请对每个选手按其最高3个分数之和进行降序排名,输出降序排名后的选手ID序列。,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天优快云在线答疑。,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天优快云在线答疑。输入第一行,一个整数N,表示该场比赛总共进行了N次射击,产生N个成绩分数(2

学Java,找哪吒 836

2023华为OD机试真题【统计射击比赛成绩】

给定一个射击比赛成绩单,包含多个选手若干次射击的成绩分数,请对每个选手按其最高3个分数之和进行降序排名,输出降序排名后的选手ID序列。比较各个选手最高3个成绩的和,有3号=5号>7号>4号,由于3号和5号成绩相等且ID号5>3,所以输出为:5,3,7,4。4号选手成绩:24,39,76,66,最高3个成绩的和为:76+66+39=181。3号选手成绩:53,80,55,最高3个成绩的和为:80+55+53=188。5号选手成绩:53,80,55,最高3个成绩的和为:80+55+53=188。

wtswts1232的博客 630

华为OD机考双机位C卷 - 统计射击比赛成绩(Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 统计射击比赛成绩(OD上机考试双机位C卷)。提供在线OJ刷题。Java、C++、Python、GO语言、C语言、JavaScript题解,并提供完整思路讲解。

算法大师! 4819

华为机试真题实战应用【赛题代码篇】-统计射击比赛成绩(附Python、C语言和Java代码)

② 确定数据如何处理,将map转为stream的形式处理,先过滤掉list小于3的数据,再对list排序取前三的和,按照和的大小排序,和一样的按照key排序。给定一个射击比赛成绩单,包含多个选手若干次射击的成绩分数,请对每个选手按其最高3个分数之和进行降序排名,输出降序排名后的选手ID序列。比较各个选手最高3个成绩的和,有3号=5号>7号>4号,由于3号和5号成绩相等且ID号5>3,所以输出为:5,3,7,4。3号选手成绩:53,80,55,最高3个成绩的和为:80+55+53=188。

qq_36130719的博客 370

【华为机试】2023年真题B卷(python)-统计射击比赛成绩

【华为机试】2023年真题B卷(python)-统计射击比赛成绩

u014481728的博客 960

华为OD- 统计射击比赛成绩-2024年OD(A卷)

给定一个射击比赛成绩单,包含多个选手若干次射击的成绩分数,请对每个选手按其最高3个分数之和进行降序排名,输出降序排名后的选手ID序列。输入第一行,一个整数N,表示该场比赛总共进行了N次射击,产生N个成绩分数(2<=N<=100)。输入第三行,一个长度为N整数序列,表示参与每次射击的选手对应的成绩(0<=成绩<=100)。输入第二行,一个长度为N整数序列,表示参与每次射击的选手ID(0<=ID<=99)。如果一个选手成绩少于3个,则认为选手的所有成绩无效,排名忽略该选手。

蜗牛快快快快跑的博客 360

【华为OD机试】统计射击比赛成绩【2023 B卷|100分】

给定一个射击比赛成绩单,包含多个选手若干次射击的成绩分数, 请对每个选手按其最高3个分数之和进行降序排名,输出降序排名后的选手ID序列。

goldarmour的博客 629

【华为OD统一考试B卷 】统计射击比赛成绩 python

给定一个射击比赛成绩单,包含多个选手若干次射击的成绩分数,请对每个选手按其最高3个分数之和进行降序排名,输出降序排名后的选手ID序列。比较各个选手最高3个成绩的和,有3号=5号>7号>4号,由于3号和5号成绩相等且ID号5>3,所以输出为:5,3,7,4。4号选手成绩:24,39,76,66,最高3个成绩的和为:76+66+39=181。3号选手成绩:53,80,55,最高3个成绩的和为:80+55+53=188。5号选手成绩:53,80,55,最高3个成绩的和为:80+55+53=188。

qq_34443966的博客 390

【全网最全最详细】智能体提示词prompt教程

定义:提示词是用户输入给AI模型(如ChatGPT、MidJourney等)的指令或问题,用于引导模型生成特定类型的输出。它是用户与AI交互的核心媒介。作用:提示词的质量直接影响AI输出的准确性和相关性。好的提示词能明确任务边界、减少歧义,并激发模型的创造力。提示词就是“给AI下指令的说明书”——越清楚、越具体,AI干得越好!帮你更快、更准地拿到想要的结果,不用和AI“猜谜语”。

qq_38196449的博客 8214

实战指南 | IC模拟版图设计从零到精通,手把手带你掌握EDA工具与GDSII输出

本文提供了一份从零开始的IC模拟版图设计实战指南。详细介绍了如何搭建Linux环境、安装Cadence Virtuoso等EDA工具,并深入解析了PDK设计规则。通过手把手绘制CMOS反相器版图的实例,系统讲解了版图绘制、DRC/LVS验证、寄生参数提取、匹配设计以及ESD防护等核心技能,最终指导如何正确生成交付芯片制造厂的标准GDSII文件,帮助读者掌握完整的模拟版图设计流程。

weixin_29214691的博客 389

Docker网络教程(四)macvlan 网络教程

在这种网络下,Docker 宿主机在它的IP之上,允许接受多个 MAC 地址的请求,然后再将这些请求路由至对应的容器里。流通,Docker 会用它的 MAC 地址,把流量路由进你的容器里。对于网络上的网络设备来说,你的容器似乎是物理上连接到网络上的。),Docker使用其MAC地址将流量路由到你的容器。对于网络上的网络设备来说,你的容器似乎是物理上连接到网络上的。你需要 3.9 或者更高版本的 Linux 内核,4.0 以及以上的版本是更好的。如果你的设备叫别的名字,用对应的名字代替。

weixin_42445065的博客 4132

Sony微单相机alpha6000 wifi远程控制(1)

引言 Sony’s Camera Remote API beta SDK allows you to control a number of Sony cameras, including Sony Action cams, Sony Alpha cameras and Lens Style cameras, wirelessly from another device. 索尼于2017年三月Re...

markfuk996的博客 4964

本地大模型部署实战:LM Studio与Ollama的易用性与性能深度评测

本文对两款主流本地大模型部署工具LM Studio和Ollama进行了深度评测。LM Studio凭借图形化界面和内置模型库,为新手提供了开箱即用的便捷体验,并支持OpenAI兼容API,易于生态集成。Ollama则以命令行驱动,轻量高效,凭借其原生API和Modelfile自定义能力,在自动化集成和性能方面表现突出。文章从易用性、模型生态、性能及扩展性多维度对比,帮助用户根据自身技术背景和使用场景做出最佳选择。

weixin_29039773的博客 528

Spark Sql 连接mysql

转载请务必注明原创地址为:http://dongkelun.com/2018/03/21/sparkMysql/ 1、基本概念和用法(摘自spark官方文档中文版) Spark SQL 还有一个能够使用 JDBC 从其他数据库读取数据的数据源。当使用 JDBC 访问其它数据库时,应该首选 JdbcRDD。这是因为结果是以数据框(DataFrame)返回的,且这样 Spark SQL操作轻松或便......

主要分享大数据相关的知识,如Spark、Hudi 1万+

【系统分析师】2025年上半年真题:案例分析-答案及详解(回忆版)

摘要: 试题一考查面向对象分析,涉及用例模型构建的四个阶段(识别参与者、合并需求、细化描述、调整模型),分析CRM系统的参与者与用例,并说明用例间的包含、扩展和泛化关系。 试题二探讨嵌入式Docker,包括容器的轻量性、可移植性及隔离性含义,10项措施与7个规范方面的对应关系,以及优化容器切换时间的三种方法(如无状态连接优化)。 试题三聚焦数据库设计,分析订单表的函数依赖与范式分解(BCNF),讨论分解后是否保持函数依赖及无损性,并针对触发器的性能缺陷提出优化方案。 试题四解析Web开发中的MVC架构与SS

数据知道的博客 6601

海康威视 2024届 数字逻辑设计 实习笔试分析

记录一下 5月11日晚,做的海康威视的一场笔试。分享给需要的IC人。 岗位:数字逻辑设计工程师(浙江 杭州) 转载需要本人同意! 我的见解不一定都是准确的,欢迎评论区交流指正~~

记录所学,分享知识,结识挚友 1万+

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

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

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

上一篇: 华为OD_最小调整次数_C++版本
下一篇: 【华为OD机试真题E卷】521、 机器人可活动的最大网格点数目 | 机试真题+思路参考+代码解析(E卷复用)(C++)
吴_知遇
博客等级 码龄7年 100粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值