作业:
河岸上有n个渔民,他们都想移到对岸。一艘船可承载不超过m公斤,船上最多可容纳2人。确定将所有渔民运送到对岸所需的最少船只数量 该程序应输出一个数字 -将所有渔民运送到对岸所需的最少船只数量。
我还没弄清楚如何对每艘船 2 个渔民进行排序。我的代码计算平均值并经常给出正确的答案。
import math
big_man = 0 # вес рыбаков, которые не смогут переплыть (вес больше грузоподъемности лодки)
man = []
m = int(input("Максимальная масса, которую выдержит 1 лодка: "))
if 1 > m > 10e6:
print("Неверное значение массы!")
else:
n = int(input("Кол-во рыбаков: "))
if 1 > n > 100:
print("Недопустимое значение количества рыбаков!")
else:
kg = list(map(int, input("вес каждого рыбака через пробел: ").split()))
count = len(kg)
if count != n:
print("Недопустимое количество веса!")
else:
for i in kg:
if i > m:
big_man += 1
else:
man.append(i)
min_boat = math.ceil(sum(man)/m)
if big_man > 0:
print(f"{big_man} рыбака не смогут переплыть!")
print(f"Смогут переплыть на другой берег оставшиеся {n - big_man} рыбака на {min_boat} лодках!")
else:
print(f"Смогут переплыть рыбаки на {min_boat} лодках!")