【华为OD机试真题】232、统计射击比赛成绩 | 机试真题+思路参考+代码分析(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 

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

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

相关文章

⭐Unity 开发 | 如何通过 NTP 网络时间实现精准的跨平台时间同步【附完整源码 + UI 模块 + 偏差分析】

&#x1f3ae; 项目实战 | 实现一套精确、可视化的游戏时间同步机制&#xff0c;让你的多人在线游戏摆脱“时间不一致”噩梦&#xff01; 效果如图&#xff1a; &#x1f4cc; 一、前言&#xff1a;为什么不能只信本地时间&#xff1f; 在 Unity 游戏开发中&#xff0c;时间几…

Vue3 Composition API与十大组件开发案例详解

文章目录 一、Vue3核心API解析1.1 Composition API优势1.2 核心API 二、十大组件开发案例案例1&#xff1a;响应式表单组件案例2&#xff1a;动态模态框&#xff08;Teleport应用&#xff09;案例3&#xff1a;可复用列表组件案例4&#xff1a;全局状态通知组件案例5&#xff1…

Kafka 详细解读

1. Producer&#xff08;生产部卷王&#xff09; 职责&#xff1a;往 Kafka 里疯狂输出数据&#xff0c;KPI 是「日抛式消息海啸」 职场人设&#xff1a; 白天开会画饼&#xff0c;深夜写周报的奋斗逼&#xff0c;口头禅是「这个需求今晚必须上线&#xff01;」代码里的「福报…

LicheeRV Nano 与Ubuntu官方risc-v 镜像混合

LicheeRV Nano 官方给的镜像并没有unbutu, unbutu官方有一个基于 LicheeRV Dock的镜像&#xff0c;想象能否将二者混合 &#xff08;1&#xff09;刷 LicheeRV Dock的镜像 nano无法启动 &#xff08;2&#xff09;将nano的boot分区替换掉 LicheeRV Dock的rootfs以外的分区也…

【模板匹配】图像处理(OpenCV)-part10

19.1模板匹配 模板匹配就是用模板图&#xff08;通常是一个小图&#xff09;在目标图像&#xff08;通常是一个比模板图大的图片&#xff09;中不断的滑动比较&#xff0c;通过某种比较方法来判断是否匹配成功,找到模板图所在的位置。 不会有边缘填充。 类似于卷积&#xff0c…

HTML:表格数据展示区

<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>人员信息表</title><link rel"styl…

MySQL 的锁,表级锁是哪一层的锁?行锁是哪一层的锁?

MySQL 的锁层级与类型 在 MySQL 中&#xff0c;锁的层级和实现与存储引擎密切相关。 1. 表级锁&#xff08;Table-Level Locks&#xff09; &#xff08;1&#xff09;存储引擎层的表级锁 实现层级&#xff1a;存储引擎层&#xff08;如 MyISAM、InnoDB&#xff09;。特点&a…

阿里巴巴按图搜索1688商品(拍立淘) API 返回值说明

阿里巴巴按图搜索1688商品&#xff08;拍立淘&#xff09;API 返回值说明 阿里巴巴按图搜索1688商品&#xff08;拍立淘&#xff09;API 的返回值通常以 JSON 格式返回&#xff0c;包含搜索结果、商品信息、分页信息等。以下是具体的返回值说明&#xff1a; 1. 请求状态信息 …

基于esp32-s3,写一个实现json键值对数据创建和读写解析c例程

以下是一个基于 ESP32 - S3 使用 ESP - IDF 框架实现 JSON 键值对数据创建、读写和解析的 C 语言例程。 环境准备 确保你已经安装了 ESP - IDF 开发环境&#xff0c;并且可以正常编译和烧录代码到 ESP32 - S3 开发板。 代码示例 #include <stdio.h> #include <stri…

MyBatis-Plus 使用 Wrapper 构建动态 SQL 有哪些优劣势?

MyBatis-Plus (MP) 提供的 Wrapper (如 QueryWrapper, LambdaQueryWrapper, UpdateWrapper, LambdaUpdateWrapper) 是其核心特性之一&#xff0c;它允许我们在开发时以面向对象的方式构建 SQL 的 WHERE 条件、ORDER BY、SELECT 字段列表等部分。与传统的 MyBatis 在 XML 文件中…

STM32与i.MX6ULL内存与存储机制全解析:从微控制器到应用处理器的设计差异

最近做FreeRTos&#xff0c;以及前面设计的RVOS&#xff0c;这种RTOS级别的系统内存上的分布与CortexA系列里面的分布有相当大的区别&#xff0c;给我搞糊涂了。 目录 STM32&#xff08;Cortex-M系列&#xff09;的内存与存储机制 Flash存储内容RAM存储内容启动与运行时流程示例…

Eteam 0.3版本开发规划

Eteam 0.1系列经历了3个小版本&#xff0c;主要完成了团队资料库功能。 Eteam 0.2系列经历了22个小版本&#xff0c;主要完成了白板和AI交互的能力。 目前的问题 目前白板上的数据有两个来源&#xff0c;团队资料库和外部数据。外部数据和团队资料库数据边界不是很清晰。 0.3版…

HTML5好看的水果蔬菜在线商城网站源码系列模板5

文章目录 1.设计来源1.1 主界面1.2 关于我们1.3 商品服务1.4 果蔬展示1.5 联系我们1.6 商品具体信息1.7 登录注册 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&#xff0c;在线沟通 作者&#xff1a;xcLeigh 文章地址&#…

深入理解Java包装类:自动装箱拆箱与缓存池机制

深入理解Java包装类&#xff1a;自动装箱拆箱与缓存池机制 对象包装器 Java中的数据类型可以分为两类&#xff1a;基本类型和引用类型。作为一门面向对象编程语言&#xff0c; 一切皆对象是Java语言的设计理念之一。但基本类型不是对象&#xff0c;无法直接参与面向对象操作&…

uniapp自定义拖拽排列

uniapp自定义拖拽排列并改变下标 <!-- 页面模板 --> <template><view class"container"><view v-for"(item, index) in list" :key"item.id" class"drag-item" :style"{transform: translate(${activeInde…

基于SpringBoot的课程管理系统

前言 今天给大家分享一个基于SpringBoot的课程管理系统。 1 系统介绍 课程管理系统是一种专门为学校设计的软件系统&#xff0c;旨在帮助学校高效地管理和组织各类课程信息。 该系统通常包括学生、教师和管理员三大角色。 他们可以通过系统进行选课、查看课程表、考试、进…

max31865典型电路

PT100读取有很多种方案&#xff0c;常用的惠斯通电桥&#xff0c;和专用IC max31865 。 电阻温度检测器(RTD)是一种阻值随温度变化的电阻。铂是最常见、精度最高的测温金属丝材料。铂RTD称为PT-RTD&#xff0c;镍、铜和其它金属亦可用来制造RTD。RTD具有较宽的测温范围&#x…

飞算 JavaAI 与 Spring Boot:如何实现微服务开发效率翻倍?

微服务架构凭借其高内聚、低耦合的特性&#xff0c;成为企业构建复杂应用系统的首选方案。然而&#xff0c;传统微服务开发流程中&#xff0c;从服务拆分、接口设计到代码编写、调试部署&#xff0c;往往需要耗费大量时间与人力成本。Spring Boot 作为 Java 领域最受欢迎的微服…

(2)Docker 常用命令

文章目录 Docker 服务器Docker 镜像Docker 容器本地 RegistryRUN vs CMD vs ENTRYPOINTRUNCMDENTRYPOINT 限制容器对内存、CPU 和 IO 资源的使用内存CPUBlock IO设置权重bps 和 iops cgroup 和 namespacecgroupnamespacMount namespaceUTS namespaceIPC namespacePID namespace…

Django 实现电影推荐系统:从搭建到功能完善(附源码)

前言&#xff1a;本文将详细介绍如何使用 Django 构建一个电影推荐系统&#xff0c;涵盖项目的搭建、数据库设计、视图函数编写、模板渲染以及用户认证等多个方面。&#x1f517;软件安装、环境准备 ❤ 【作者主页—&#x1f4da;阅读更多优质文章、获取更多优质源码】 目录 一…