华为od统一考试B卷【比赛】python实现



def split_params(param_str): return list(map(int, param_str.split(','))) def main(): # 获取输入 target_str = input().strip() # 输入验证,拆分并转换为整数 try: m, n = split_params(target_str) except ValueError: print(-1) return # 检查 M 和 N 的范围 if not (3 <= m <= 10 and 3 <= n <= 100): print(-1) return # 创建矩阵以存储打分 matrix = [] for _ in range(m): tmp_str = input().strip() try: temp = list(map(int, tmp_str.split(','))) if len(temp) != n or any(x < 1 or x > 10 for x in temp): print(-1) return matrix.append(temp) except ValueError: print(-1) return # 计算每位选手的总分和分数分布 players = [] for j in range(n): playerScores = [matrix[i][j] for i in range(m)] total_score = sum(playerScores) score_count = [0] * 11 # 用于记录每个分数(1-10)的数量 for score in playerScores: score_count[score] += 1 players.append((j + 1, total_score, score_count)) # 根据总分和分数分布进行排序 players.sort(key=lambda x: (x[1], x[2][::-1]), reverse=True) # 输出前3名选手 for i in range(3): print(players[i][0], end=(", " if i != 2 else "")) print() if __name__ == "__main__": main()
好的,下面我将详细解释代码的执行流程,逐步分析每一个部分的作用和效果。
1. 输入获取与处理
代码部分
target_str = input().strip()
- 功能: 从用户获取输入,使用
strip()去掉多余的空格或换行。
代码部分
try:m, n = split_params(target_str)
except ValueError:print(-1)return
- 功能: 使用
split_params函数将输入字符串分割并转为整数m和n,代表评委数量和选手数量。如果输入格式不正确,捕获异常并输出-1。
2. 检查范围
代码部分
if not (3 <= m <= 10 and 3 <= n <= 100):print(-1)return
- 功能: 检查
m和n是否在规定的范围内。如果不在范围内,输出-1。
3. 输入评分矩阵
代码部分
for _ in range(m):tmp_str = input().strip()
- 功能: 用循环读取每一位评委的打分。
代码部分
try:temp = list(map(int, tmp_str.split(',')))if len(temp) != n or any(x < 1 or x > 10 for x in temp):print(-1)returnmatrix.append(temp)
except ValueError:print(-1)return
- 功能:
- 将每个评委的分数通过逗号分割并转为整数。
- 检查分数是否符合要求(分数数量是否为
n、分数是否在1到10的范围内)。 - 如果任何条件不符合,输出
-1。
4. 计算每位选手的总分
代码部分
players = []
for j in range(n):playerScores = [matrix[i][j] for i in range(m)]total_score = sum(playerScores)score_count = [0] * 11 # 用于记录每个分数(1-10)的数量for score in playerScores:score_count[score] += 1players.append((j + 1, total_score, score_count))
- 功能:
- 初始化一个列表
players来存储每位选手的信息。 - 对于每一位选手
j,构建一个playerScores列表来存储所有评委对该选手的评分。 - 使用
sum计算该选手的总得分,并构建score_count数组来统计每个分数(从1到10)的数量。 - 将选手编号(
j+1)、总分和分数分布以元组的形式存入players列表。
- 初始化一个列表
5. 排序
代码部分
players.sort(key=lambda x: (x[1], x[2]), reverse=True)
- 功能:
- 对
players列表进行排序,首先根据总分(x[1])排序,再根据分数分布(x[2])进行次排序,以确保分数高的选手排在前面。
- 对
6. 输出结果
代码部分
for i in range(3):print(players[i][0], end=(", " if i != 2 else ""))
print()
- 功能:
- 输出前 3 名选手的编号,每个编号用逗号分隔。
- 最后使用
print()输出一个换行。
7. 总结
- 整体逻辑是:先读取和验证输入,然后读取评分数据,计算每位选手的总得分和分数分布,进行排序,并最终输出前 3 名选手的编号。
- 任何时候只要发现不合规的输入,都会及时输出
-1,确保程序的健壮性。
这个流程确保了程序按照规范格式处理评分并输出合规的结果。
好的,我们来一步步分析这个输入例子的处理流程:
输入示例
4,5
10,6,9,7,6
9,10,6,7,5
8,10,6,5,10
9,10,8,4,9
1. 解析输入参数
- 第一行:
4,5- 使用
split_params函数处理这行字符串,将其分割为m = 4和n = 5。 - 判断范围:
3 <= 4 <= 10(✓),3 <= 5 <= 100(✓),符合要求。
- 使用
2. 读取评分矩阵
接下来的四行是各评委对选手的评分。
-
第二行:
10,6,9,7,6- 将其转为整数列表:
[10, 6, 9, 7, 6] - 检查条件:长度为 5(✓),所有分数在 1 到 10 之间(✓)。
- 添加到矩阵中。
- 将其转为整数列表:
-
第三行:
9,10,6,7,5- 转为
[9, 10, 6, 7, 5]。 - 检查条件:长度为 5(✓),所有分数在 1 到 10 之间(✓)。
- 添加到矩阵中。
- 转为
-
第四行:
8,10,6,5,10- 转为
[8, 10, 6, 5, 10]。 - 检查条件:长度为 5(✓),所有分数在 1 到 10 之间(✓)。
- 添加到矩阵中。
- 转为
-
第五行:
9,10,8,4,9- 转为
[9, 10, 8, 4, 9]。 - 检查条件:长度为 5(✓),所有分数在 1 到 10 之间(✓)。
- 添加到矩阵中。
- 转为
3. 计算每位选手的总分
接下来,计算每位选手的总分和分数分布。
-
选手 1 (编号 1):
- 评分:
[10, 9, 8, 9] - 总分:
10 + 9 + 8 + 9 = 36 - 分数分布:
[0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3](1 分: 0,2 分: 0,……,9 分: 3,10 分: 1)
- 评分:
-
选手 2 (编号 2):
- 评分:
[6, 10, 10, 10] - 总分:
6 + 10 + 10 + 10 = 36 - 分数分布:
[0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3]
- 评分:
-
选手 3 (编号 3):
- 评分:
[9, 6, 6, 8] - 总分:
9 + 6 + 6 + 8 = 29 - 分数分布:
[0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 1]
- 评分:
-
选手 4 (编号 4):
- 评分:
[7, 7, 5, 4] - 总分:
7 + 7 + 5 + 4 = 23 - 分数分布:
[0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 2]
- 评分:
-
选手 5 (编号 5):
- 评分:
[6, 5, 10, 9] - 总分:
6 + 5 + 10 + 9 = 30 - 分数分布:
[0, 0, 0, 0, 0, 1, 0, 1, 0, 2, 1]
- 评分:
4. 排序
对选手进行排序,首先根据总分,其次根据分数分布:
- 选手 1:
(1, 36, 分数分布) - 选手 2:
(2, 36, 分数分布) - 选手 5:
(5, 30, 分数分布) - 选手 3:
(3, 29, 分数分布) - 选手 4:
(4, 23, 分数分布)
排序结果:
- 选手 1:
(1, 36)(分数分布), - 选手 2:
(2, 36)(分数分布), - 选手 5:
(5, 30)(分数分布), - 选手 3:
(3, 29)(分数分布), - 选手 4:
(4, 23)(分数分布)。
因为选手 1 和 选手 2 的总分相同,分数分布会再继续排序,实际分数分布会比较(具体可实现比较规则,我这里简化)。
5. 输出结果
打印前 3 名选手编号:
1, 2, 5
总结
通过以上步骤,我们处理了输入数据并找出了得分最高的选手,确保了每一步有合理的错误处理和有效的结果输出。这种流程确保系统能够有效地运行并给出准确的结果。
相关文章:
华为od统一考试B卷【比赛】python实现
def split_params(param_str): return list(map(int, param_str.split(,))) def main(): # 获取输入 target_str input().strip() # 输入验证,拆分并转换为整数 try: m, n split_params(target_str) except ValueError: print(-1) return # 检查 M 和 …...
Prometheus 监控接入规范
目录 一、目的 二、自定义监控指标定义规范 2.1 基本命名规范 2.1.1 指标命名规范 2.1.2 标签名称 2.2 控制基数 2.2.1 避免高基数标签 2.2.2 预定义标签集 2.2.3 动态数据的处理 2.2.4 评估与监控基数 2.2.5 降低历史数据的保留 2.2.6 适当使用 Histogram 和 Summa…...
优化 SQL 查询性能:深入理解 EXPLAIN 命令
优化 SQL 查询性能:深入理解 EXPLAIN 命令 在 MySQL 数据库管理中,优化 SQL 查询性能是确保高效数据处理的关键。EXPLAIN 命令是分析和优化 SQL 查询的强大工具,它帮助我们理解查询执行计划,从而找到性能瓶颈并进行优化。本文将详细解释 EXPLAIN 命令返回的各个列的含义,…...
@Mapper报红
检查pom.xml,导入 org.mybatis.spring.boot 依赖: <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.3</version></dependency…...
shell综合小实验1-----查看系统硬件信息
echo命令的使用 1:echo -n 不换行 echo -n “我是个大聪明” #不换行输入我是大聪明 2:echo -e 开启颜色 echo -e "\03335m我是大聪明\033[0m" #用35m这种颜色输出我是大聪明然后关闭颜色显示, 30多是字体颜色,40多是…...
【过程管理】项目需求管理规程(Word原件)
在软件开发的过程中,开发人员与用户之间往往忽视有效的信息沟通,这常常导致开发出的软件无法满足用户的实际需求,进而引发不必要的返工。返工不仅为开发人员带来技术上的困扰,增加了人力和物力的消耗,还会对软件的整体…...
C# 不使用 `async` 和 `await` 的常见场景
虽然 async 和 await 是强大的异步编程工具,但在某些情况下,不使用它们可能更合适。以下是一些不使用 async 和 await 的常见场景: 方法是完全同步的: 如果方法中的所有操作都是同步的,并且没有异步调用,则…...
adb目录笔记《adb更新、进入开发者模式,adb查询packages、adb开启应用,查询进程、强制删除进程》
1.sideload模式 在需要安卓没有root权限的时候,可以使用adb reboot sideload命令进入sideload模式,之后运行对应文件 adb reboot sideload adb sideload <root.zip> 2.packages包查询、运行、删除 在需要查看安卓中packages包的名称时…...
VS2022 C++ EasyX EGE 吃豆人升级版
我是可爱的C小盆友(不要脸了),嘻嘻,等了这么久,吃豆人终于升级啦! 更新日志: 1.修复奇奇怪怪的bug 2.把敌人AI增强了一(hen)点(duo) 3.加入了…...
计算机图形学 | 动画模拟
动画模拟 布料模拟 质点弹簧系统: 红色部分很弱地阻挡对折 Steep connection FEM:有限元方法 粒子系统 粒子系统本质上就是在定义个体和群体的关系。 动画帧率 VR游戏要不晕需要达到90fps Forward Kinematics Inverse Kinematics 只告诉末端p点,中间…...
B2.3 Arm 内存模型定义
B2.3 Arm 内存模型定义 Arm 内存模型引入了以下几种关系: 内在关系 :例如,内在数据/控制/顺序依赖关系和内在翻译之前的关系,这些是源自指令语义的硬件要求。 之后关系 :例如,之后的连贯性和 TLB 之后的关系,这些关系在特定执行中发生这种方式,但在不同的执行中可以以…...
(javaweb)SpringBootWeb案例(毕业设计)案例--部门管理
目录 1.准备工作 2.部门管理--查询功能 3.前后端联调 3.部门管理--新增功能 1.准备工作 mapper数据访问层相当于dao层 根据页面原型和需求分析出接口文档--前后端必须遵循这种规范 大部分情况下 接口文档由后端人员来编写 前后端进行交互基于restful风格接口 http的请求方式…...
PCL 采样一致性模型介绍
采样一致性可以简单高效的检测出一些具有数学表达式的目标模型。PCL中的sample consensus模块中不仅包含各种的采样一致性估计方法,也包含一些已经编写好的数学模型,下面主要介绍一下PCL中的采样一致性模型。 1. 二维圆模型 pcl::SampleConsensusModelCircle2D< PointT …...
Unity手游开放大世界解决方案
开个新坑了,分享一个手游开放大世界的解决方案,也算是我开发研究了一年多的结果吧。之前项目需要,做了一整套的手游开放大世界解决方案,这里做一个总结归纳,将所需要的技术栈和解决方案等汇总。 这篇文章只是起头一个目…...
mysql B+ 树
问题: mysql innodb引擎 B树主键自增,插入数据时是从中间分裂,还是使用页尾部元素作为父节点的值然后添加一个新页,或者说主键连续自增,mysql有没有做这样的优化? 以下是Chat GPT给出的回答:...
Sublime Text常用快捷键大全
Sublime Text 是一款功能强大且广受欢迎的文本编辑器,其丰富的快捷键支持使得开发者能够更高效地编写和编辑代码。以下是 Sublime Text 中一些常用的快捷键,帮助你更加高效地使用这款工具: 功能分类快捷键 (Windows)快捷键 (Mac)新建文件Ctr…...
中成科信票务管理系统 TicketManager.ashx接口SQL注入漏洞复现 [附POC]
文章目录 中成科信票务管理系统 TicketManager.ashx接口SQL注入漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现0x06 修复建议中成科信票务管理系统 TicketManager.ashx接口SQL注入漏洞复现 [附POC] 0x01 前言 …...
设计模式六大原则之:依赖倒置原则
1. 依赖倒置原则简介 依赖倒置原则(Dependency Inversion Principle, DIP) 是面向对象设计的核心原则之一,由罗伯特马丁(Robert C. Martin)提出,旨在降低类间的依赖度,使之更易于维护和扩展。该原则主张高层模块不应该依赖于底层模块&#x…...
06_Linux中如何让程序重启后自动启动
Linux中如何让程序重启后自动启动 systemd单元文件1.创建服务文件!!!服务配置文件的介绍 2.需要配置服务的状态(加载和启用服务)3.验证服务程序的运行状态4.打印程序的标准输出 systemd单元文件 Systemd 是现代 Linux…...
优化业务流程的关键:深入探讨BPA流程设计
在当前竞争激烈的商业环境中,业务流程自动化(BPA)已经成为企业提升效率、减少成本和提高业务灵活性的关键工具。今天,我们将深入探讨BPA流程设计的重要性及其实施步骤,为企业提供实用的指南。 什么是BPA? …...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...
群晖NAS如何在虚拟机创建飞牛NAS
套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...
【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...
从实验室到产业:IndexTTS 在六大核心场景的落地实践
一、内容创作:重构数字内容生产范式 在短视频创作领域,IndexTTS 的语音克隆技术彻底改变了配音流程。B 站 UP 主通过 5 秒参考音频即可克隆出郭老师音色,生成的 “各位吴彦祖们大家好” 语音相似度达 97%,单条视频播放量突破百万…...
python打卡day49@浙大疏锦行
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 一、通道注意力模块复习 & CBAM实现 import torch import torch.nn as nnclass CBAM(nn.Module):def __init__…...
[特殊字符] Spring Boot底层原理深度解析与高级面试题精析
一、Spring Boot底层原理详解 Spring Boot的核心设计哲学是约定优于配置和自动装配,通过简化传统Spring应用的初始化和配置流程,显著提升开发效率。其底层原理可拆解为以下核心机制: 自动装配(Auto-Configuration) 核…...
