解决方案:
环境: python 3.6 + pycharm
代码:
class Solution:
def __init__(self):
pass
def calculate_time(self):
import numpy as np
n = int(input("请输入过河人数:"))
assert (n > 2 & n <= 100000)
river_time_list = input('请输入每个人过河时间,空格隔开:')
river_time_list = river_time_list.split(' ')
for i in range(len(river_time_list)):
river_time_list[i] = int(river_time_list[i])
assert (river_time_list[i] > 0 & river_time_list[i] <= 100000)
print('初始每个人的过河时间数组=', river_time_list)
total_time = 0.0
min = river_time_list[np.argmin(river_time_list)]
len_ = len([it > 0 for it in river_time_list])
while len_ >= 4:
i = np.argmax(river_time_list)
total_time += river_time_list[i]
river_time_list[i] = -1
j = np.argmax(river_time_list)
river_time_list[j] = -1
total_time += min
len_ = len([it for it in river_time_list if it > 0])
i = np.argmax(river_time_list)
total_time += river_time_list[i]
print('最短过河时间:{}'.format(total_time))
return total_time
if __name__ == '__main__':
Solution().calculate_time()