defcross(nums):
n =len(nums)if n ==1:return nums
if n ==2:returnmax(nums)if n ==3:returnsum(nums)
nums.sort()
ans =0while n >3:
ans +=min(nums[n -1]+ nums[0]+ nums[n -2]+ nums[0], \
nums[1]+ nums[0]+ nums[n -1]+ nums[1])
n -=2# 边界条件讨论if n ==3:
ans +=sum(nums)# 只剩三人else:
ans += nums[1]# 只剩两人,不可能剩一人return ans
nums =[]whileTrue:
num =int(input('请输入每个人的过桥时间(输入0代表结束输入): '))if num !=0:
nums.append(num)else:breakprint("过桥的最短时间为: ", cross(nums))