1

链接:https://www.nowcoder.com/questionTerminal/0c16f758949f4d17ab73a9a1ffe7ab9b
来源:牛客网

牛家庄幼儿园为庆祝61儿童节举办庆祝活动,庆祝活动中有一个节目是小朋友们围成一个圆圈跳舞。牛老师挑选出n个小朋友参与跳舞节目,已知每个小朋友的身高h_i。为了让舞蹈看起来和谐,牛老师需要让跳舞的圆圈队形中相邻小朋友的身高差的最大值最小,牛老师犯了难,希望你能帮帮他。
如样例所示:
当圆圈队伍按照100,98,103,105顺时针排列的时候最大身高差为5,其他排列不会得到更优的解

输入描述:

输入包括两行,第一行为一个正整数n(3 ≤ n ≤ 20)
第二行为n个整数h_i(80 ≤ h_i ≤ 140),表示每个小朋友的身高。

代码

n = int(input())
l = [int(x) for x in input().split(' ')]
l.sort()
ans = 0
for i in range(2, n):
    ans = max(ans, l[i] - l[i-2])
print(ans)

解题思路

先排序,然后最佳的排列方案是:奇数位置和偶数位置分为两队,两队首尾相接。

这样最大身高差是:整个队伍排序后,间隔一位的任意两个人中的最大身高差

欢迎来我的博客: https://codeplot.top/
我的博客刷题分类:https://codeplot.top/categories/%E5%88%B7%E9%A2%98/


sxwxs
292 声望20 粉丝

计算机专业学生