【华为机试】2023年真题B卷(python)-拔河比赛

一、题目

题目描述:

公司最近准备进行拔河比赛,需要在全部员工中进行挑选选拔的规则如下: 1.按照身高优先、体重次优先的方式准备比赛阵容 2.规定参赛的队伍派出10名选手 请实现一个选拔队员的小程序。 输入为一个数组,记录了部门人员的身高、体重信息,如[身高,体重的方式放置;部门全部成员数量为大于10的一个数组要求输出一个size为10的二维数组,

二、输入输出

输入描述:

输入为N行员工信息,表示部门报名参加选拔的候选人信息,每行有两个数字,使用空格分隔,表示员工的身高、体重信息 如 181 70 182 70 表示两位候选员工,第一人身高181厘米,体重70公斤;第二人身高182厘米,体重70公斤。
输出描述:

要求输出一个10行的已经排序的参赛员工信息数据,每行有两个数字,使用空格分隔,表示员工的身高、体重信息如 182 70 181 70
备注:输入数据范围 成员身高、体重为int数据类型 输入备选成员数量为N,10 < N 100

三、示例

示例1:
输入 :
181 70
182 70
183 70
184 70
185 70
186 70
180 71
180 72
180 73
180 74
180 75
输出 :
186 70 
185 70 
184 70 
183 70 
182 70 
181 70 
180 75 
180 74 
180 73 
180 72

四、要求

五、解题思路

简单的自定义排序,但是由于题目未限定输入的行数,因此需要自己判定输入结束的条件。

六、参考代码 

'''
#coding: utf-8
Author: mgc
Date: 2023-12-03 18:13:55
LastEditors: Do not edit
LastEditTime: 2023-12-19 15:06:47
'''

# 创建一个空列表,用于存储用户输入的数字列表  
input_lists = []  
  
# 循环接收用户输入,直到输入为空  
while True:  
    # 获取用户输入  
    input_str = input()  
      
    # 如果用户输入不为空,则将输入字符串分割成单词,并将每个单词转换为整数,然后添加到列表中  
    if input_str != "":  
        temp = []  
        for word in input_str.split():  
            temp.append(int(word))  
        input_lists.append(temp)  
    else:  
        # 如果用户输入为空,则跳出循环  
        break  
  
# 对列表按照特定规则进行排序  
input_lists = sorted(input_lists, key=lambda x: (-x[0], -x[1]), reverse=False)  
  
# 初始化输出字符串  
output_str = ""  
  
# 循环输出前10个排序后的列表  
for i in range(min(10, len(input_lists))):  
    temp_str = ""  
    for num in input_lists[i]:  
        temp_str += str(num) + " "  
    output_str += temp_str + "\n"  
  
# 打印输出字符串  
print(output_str)

你可能感兴趣的:(华为机试,华为,python,算法,拔河比赛)