我有个问题我还没弄清楚。在这个问题上,我想按顺序组装巧克力。要做到这一点,我有一个名为巧克力()的函数和七个输入,它们是
H 19中巧克力的重量(5)<代码>H 210<编码>H 111大巧克力的数量(3)<代码>H 212/代码><代码>H 113大巧克力的重量(8)<代码>H 214G 215
问题是,我要使用的巧克力和大巧克力一样多,然后是小巧克力,最后是小巧克力(最后的小巧克力的数量,最后的中巧克力的数量,最后的大巧克力的数量)。实际上,这看起来很简单,但我不确定如何使用多个输入的函数,然后返回到多个输出。如果你能帮助我如何开始,我会非常高兴,并继续写一个适当的代码,我希望。
这里有一些例子
input: 27 4 2 4 5 3 8
output: 3 1 2 发布于 2021-05-22 15:08:01
我想象你的目标是包装巧克力,从大巧克力开始,如果可能的话,试着达到目标重量。
以下返回包装的巧克力大小和包装重量,因为它可能不总是能够完全匹配目标重量。
正如您可能知道的,这是一个被称为“垃圾桶包装”的已知问题,它的解决方案比下面的“第一次拟合递减”方法要好(假设只有一个垃圾桶)。
def chocolates(final_weight, num_small_choc, w_small_choc, num_medium_choc, w_medium_choc, num_big_choc, w_big_choc):
packed_weight = 0
# Try to pack chocolates if they are not too big
def pack_choc(packed_weight, num_choc, w_choc):
while num_choc > 0:
if packed_weight + w_choc <= final_weight:
packed_weight += w_choc
num_choc -= 1
else:
break
return packed_weight, num_choc
packed_weight, remaining_big_choc = pack_choc(packed_weight, num_big_choc, w_big_choc)
packed_weight, remaining_medium_choc = pack_choc(packed_weight, num_medium_choc, w_medium_choc)
packed_weight, remaining_small_choc = pack_choc(packed_weight, num_small_choc, w_small_choc)
return num_small_choc - remaining_small_choc, num_medium_choc - remaining_medium_choc, num_big_choc - remaining_big_choc, packed_weight
>>> chocolates(27, 4, 2, 4, 5, 3, 8)
... (1, 0, 3, 26)https://stackoverflow.com/questions/67648535
复制相似问题