当前位置: 首页 > news >正文

华为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 函数将输入字符串分割并转为整数 mn,代表评委数量和选手数量。如果输入格式不正确,捕获异常并输出 -1

2. 检查范围

代码部分
if not (3 <= m <= 10 and 3 <= n <= 100):print(-1)return
  • 功能: 检查 mn 是否在规定的范围内。如果不在范围内,输出 -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 = 4n = 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() # 输入验证&#xff0c;拆分并转换为整数 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&#xff0c;导入 org.mybatis.spring.boot 依赖&#xff1a; <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.3</version></dependency…...

shell综合小实验1-----查看系统硬件信息

echo命令的使用 1&#xff1a;echo -n 不换行 echo -n “我是个大聪明” #不换行输入我是大聪明 2&#xff1a;echo -e 开启颜色 echo -e "\03335m我是大聪明\033[0m" #用35m这种颜色输出我是大聪明然后关闭颜色显示&#xff0c; 30多是字体颜色&#xff0c;40多是…...

【过程管理】项目需求管理规程(Word原件)

在软件开发的过程中&#xff0c;开发人员与用户之间往往忽视有效的信息沟通&#xff0c;这常常导致开发出的软件无法满足用户的实际需求&#xff0c;进而引发不必要的返工。返工不仅为开发人员带来技术上的困扰&#xff0c;增加了人力和物力的消耗&#xff0c;还会对软件的整体…...

C# 不使用 `async` 和 `await` 的常见场景

虽然 async 和 await 是强大的异步编程工具&#xff0c;但在某些情况下&#xff0c;不使用它们可能更合适。以下是一些不使用 async 和 await 的常见场景&#xff1a; 方法是完全同步的&#xff1a; 如果方法中的所有操作都是同步的&#xff0c;并且没有异步调用&#xff0c;则…...

adb目录笔记《adb更新、进入开发者模式,adb查询packages、adb开启应用,查询进程、强制删除进程》

1.sideload模式 在需要安卓没有root权限的时候&#xff0c;可以使用adb reboot sideload命令进入sideload模式&#xff0c;之后运行对应文件 adb reboot sideload adb sideload <root.zip> 2.packages包查询、运行、删除 在需要查看安卓中packages包的名称时&#xf…...

VS2022 C++ EasyX EGE 吃豆人升级版

我是可爱的C小盆友&#xff08;不要脸了&#xff09;&#xff0c;嘻嘻&#xff0c;等了这么久&#xff0c;吃豆人终于升级啦&#xff01; 更新日志&#xff1a; 1.修复奇奇怪怪的bug 2.把敌人AI增强了一&#xff08;hen&#xff09;点&#xff08;duo&#xff09; 3.加入了…...

计算机图形学 | 动画模拟

动画模拟 布料模拟 质点弹簧系统&#xff1a; 红色部分很弱地阻挡对折 Steep connection FEM:有限元方法 粒子系统 粒子系统本质上就是在定义个体和群体的关系。 动画帧率 VR游戏要不晕需要达到90fps Forward Kinematics Inverse Kinematics 只告诉末端p点&#xff0c;中间…...

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手游开放大世界解决方案

开个新坑了&#xff0c;分享一个手游开放大世界的解决方案&#xff0c;也算是我开发研究了一年多的结果吧。之前项目需要&#xff0c;做了一整套的手游开放大世界解决方案&#xff0c;这里做一个总结归纳&#xff0c;将所需要的技术栈和解决方案等汇总。 这篇文章只是起头一个目…...

mysql B+ 树

问题&#xff1a; mysql innodb引擎 B树主键自增&#xff0c;插入数据时是从中间分裂&#xff0c;还是使用页尾部元素作为父节点的值然后添加一个新页&#xff0c;或者说主键连续自增&#xff0c;mysql有没有做这样的优化&#xff1f; 以下是Chat GPT给出的回答&#xff1a;...

Sublime Text常用快捷键大全

Sublime Text 是一款功能强大且广受欢迎的文本编辑器&#xff0c;其丰富的快捷键支持使得开发者能够更高效地编写和编辑代码。以下是 Sublime Text 中一些常用的快捷键&#xff0c;帮助你更加高效地使用这款工具&#xff1a; 功能分类快捷键 (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) 是面向对象设计的核心原则之一&#xff0c;由罗伯特马丁(Robert C. Martin)提出&#xff0c;旨在降低类间的依赖度&#xff0c;使之更易于维护和扩展。该原则主张高层模块不应该依赖于底层模块&#x…...

06_Linux中如何让程序重启后自动启动

Linux中如何让程序重启后自动启动 systemd单元文件1.创建服务文件&#xff01;&#xff01;&#xff01;服务配置文件的介绍 2.需要配置服务的状态&#xff08;加载和启用服务&#xff09;3.验证服务程序的运行状态4.打印程序的标准输出 systemd单元文件 Systemd 是现代 Linux…...

优化业务流程的关键:深入探讨BPA流程设计

在当前竞争激烈的商业环境中&#xff0c;业务流程自动化&#xff08;BPA&#xff09;已经成为企业提升效率、减少成本和提高业务灵活性的关键工具。今天&#xff0c;我们将深入探讨BPA流程设计的重要性及其实施步骤&#xff0c;为企业提供实用的指南。 什么是BPA&#xff1f; …...

qt工程中调用sdl的流程

配置 Qt 工程 在你的 Qt 工程中&#xff0c;需要对项目文件&#xff08;.pro 文件&#xff09;进行配置&#xff0c;以包含 SDL 库的路径和链接选项。 # Qt Project File (.pro)# 设置 SDL 库的路径 INCLUDEPATH /path/to/SDL/include LIBS -L/path/to/SDL/lib -lSDL2初始化…...

ECMAScript性能优化技巧与陷阱

​ 大家好&#xff0c;我是程序员小羊&#xff01; 前言 ECMAScript&#xff0c;即JavaScript&#xff0c;是一种广泛应用于Web开发中的脚本语言。随着现代Web应用的复杂度日益增加&#xff0c;如何优化JavaScript的性能变得至关重要。性能优化不仅能提高应用的响应速度&#x…...

c++实现B树(上)

哈喽啊&#xff01;好久不见&#xff0c;甚是想念&#xff01;失踪人口要回归了&#xff0c;时隔一个多月小吉我终于要更新blog了&#x1f389;。在停更的一个多月中&#xff0c;小吉也有在好好学习提升自己&#xff0c;立志给大家呈现好文章。  现在让我们进入正题吧&#xf…...

【机器学习】深度强化学习–RL的基本概念、经典场景以及算法分类

引言 深度强化学习&#xff08;Deep Reinforcement Learning, DRL&#xff09;是机器学习的一个分支&#xff0c;它结合了深度学习&#xff08;Deep Learning&#xff09;和强化学习&#xff08;Reinforcement Learning, RL&#xff09;的技术 文章目录 引言一、深度强化学习–…...

【git】将本地文件上传到github

安装git 选择一个文件夹作为git仓库&#xff0c;cd到文件夹输入 git init文件夹出现.git文件夹&#xff0c;该文件夹默认为隐藏文件夹&#xff0c;设置为不隐藏 在cmd中输入 ssh-keygen -t rsa -C "xxxxxx.com"该邮箱为github邮箱&#xff0c;然后一路enter出现以…...

安卓应用开发学习:手机摇一摇功能应用尝试--摇骰子和摇红包

一、引言 前几天&#xff0c;我发布的日志《安卓应用开发学习&#xff1a;查看手机传感器信息》记录了如何查看手机传感器的信息&#xff0c;通过上述的方法&#xff0c;可以看到我的OPPO手机支持19种传感器。本篇日志就记录一下常见的加速度传感器的典型应用——“摇一摇”功…...

HTML中的<fieldset>标签元素框的使用

HTML 提供的 <fieldset> 标签用于在表单中分组相关元素。 <fieldset> 标签会在相关元素周围绘制一个框。 <legend> 标签为 fieldset 元素定义标题。 语法如下&#xff1a; <fieldset><legend>标题</legend><!-- 元素内容... -->…...

Linux驱动入门实验班——SR501红外模块驱动(附百问网视频链接)

目录 一、工作方式 二、接口图 三、编写思路 1.构造file_operations结构体 2.实现read函数 3.编写入口函数 4.编写中断处理函数 5.编写出口函数 6.声明出入口函数以及协议 四、源码 五、课程链接 一、工作方式 SR501人体红外感应模块有两种工作模式&#xff1a; …...

windows C++- Com技术简介(上)

在介绍C和winrt与COM组件技术的关系之前&#xff0c;有必要介绍一下com组件技术&#xff0c;这项技术比较古老&#xff0c;但是它一直作为windows的基石存在。COM 是一类独立于平台且面向对象的分布式系统&#xff0c;用于创建可交互的二进制软件组件。 COM 技术是 Microsoft O…...

Jenkins持续集成工具学习

一、从装修厨房看项目开发效率优化 二、持续集成工具 三、JavaEE项目部署方式对比 四、JenkinsSVN持续集成环境搭建 五、JenkinsGitHub持续集成环境搭建...