本文主要是介绍华为OD机试真题-求最多可以派出多少支团队-2023年OD统一考试(C卷)---Python3--开源,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:
考察内容:
if while;break; sort();for
代码:
"""
analyze:
团队:1-2
1个人只能参加一个团队input:
总人数 int
每个人能力,list
最低能力值 intoutput
最多可以派出团队的数量, integ:
5
3 1 5 7 9
8310
4 5 6 7 9 3 3 4 12 6
73+3way:
排序,倒叙;优先考虑最大的个人;然后考虑,其次最大和最小的结合,不满足,继续考虑其次最小的
最大数量为:最大个人数量+(总人数-最大个人数量)/2"""
n = int(input())
ability_list = list(map(int, input().split()))
min_ability = int(input())
# 倒叙排序
ability_list.sort(reverse=True)
team_num = 0
right = -1
max_team_num = 0
# 循环
for ability in range(len(ability_list)):# 优先一个人if ability_list[ability] >= min_ability:team_num += 1max_team_num = int((n - team_num) / 2) + team_numelse:# 至少两个人,可增加的最多数量位(N-team_num)/2temp = ability_list[ability]while temp < min_ability:right -= 1temp = ability_list[ability] + ability_list[right]if temp >= min_ability:if team_num >= max_team_num:breakelse:team_num += 1breakprint(team_num)
这篇关于华为OD机试真题-求最多可以派出多少支团队-2023年OD统一考试(C卷)---Python3--开源的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!