我有三种尺寸包装:4,6和12.现在我们必须根据订单数量设置装货数量。 例如,我有16瓶葡萄酒。我需要放入4个4号的垃圾桶包装,并将12个尺寸放入12个垃圾桶包装中,并创建两个订单。
如何使用php解决这个问题?
答案 0 :(得分:1)
我不知道php,所以我会把php-part留给别人(或者你自己,因为我相信如果你知道php,下面的内容很容易实现)。但是,我可以帮助计算。
如评论中所述,这是背包问题的一个简单示例。由于可用的盒子数量很少,这很容易解决。
显然,我们需要假设待分配的瓶子n
是均匀的(否则对n+1
瓶使用以下算法,并在任何一个盒子中留空一个槽。)
由于3*4 = 12
和2*6 = 12
可以在不使用12盒的情况下打包的最高数量的瓶子是14
(=2*4 + 1*6
)。
如果您注意到14 mod 12 = 2
可以填充的12个框的数量为
if (n mod 12 = 2)
then 12amount = n div 12 -1
else 12amount = n div 12
现在将rest
(= n - 12amount * 12
)分发给其他类型的框:
if (rest mod 6 = 2)
then 6amount = rest div 6 - 1
4amount = 2
else 6amount = rest div 6
4amount = (rest - 6amount*6)/4