计算运输一定量乘客的大小客车的最便宜数量

2024-09-30 16:35:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要编写一个程序,计算出运输一定数量乘客的大小巴士的最便宜组合,这是由用户给出的。一辆大巴载客48人,租金200美元;一辆小巴载客10人,租金95美元。我有一个解决方案,计算了许多大小巴士,但我不知道如何在成本方面的因素。这是我目前掌握的代码:

passengers = int(input("How many passengers? "))
bigBus = 0
smallBus = 0


while passengers > 0:
    if passengers / 48 > 1:
        passengers -= 48
        bigBus += 1
    else:
        passengers -= 10
        smallBus += 1

cost = (bigBus * 200) + (smallBus * 95)
print("Hire", bigBus, "big buses and", smallBus, "small buses.")
print("Cost =", cost)

在if语句中,将乘客除以48是问题的原因,因为在1辆大巴(例如30辆)上可以运送不到48名乘客,这比在3辆小巴上运送要便宜,但我不知道在这种情况下如何确定更便宜的成本。我想解决办法就在我头上。你知道吗


Tags: 程序数量if成本printcost乘客租金
2条回答

填充尽可能多的大总线passengers // 48。然后,对于剩余的乘客,您可以根据3辆小型巴士的成本高于1辆大型巴士的事实做出一个简单的决定(因此您不会使用超过2辆小型巴士):

剩余乘客=passengers % 48

  • 在0和20之间:使用0、1或2个小型总线(remaining+9) // 10。你知道吗
  • 超过20辆:多用一辆大巴

这可以归结为:

remaining   = passengers % 48
largeBusses = passengers // 48 + int(remaining > 20)
smallBusses = (remaining+9) // 10 * int(remaining <= 20)

您的每位乘客的平均费用是200/4895/10(如果公共汽车已满)。显然,更大的巴士更经济,所以最好的解决方案是当你使用更多的大型巴士。你知道吗

n_large = 0
n_small = 0

n_large += passengers // 48

# people remain unsettled
# [0, 48]
passengers = passengers % 48

但是您还需要计算最后一班公共汽车的费用,因为它没有坐满人:if 200/num_people_left > 95/num_people_left然后为最后几个人使用较小的公共汽车。你知道吗

相关问题 更多 >