如何从队列中分配卡车中的有效负载?

时间:2018-03-12 06:50:18

标签: algorithm

我被问到一个产品基础公司的这个面试问题,我无法得到最好的方法来做同样的事情,我真的很想知道答案。

我有一个有效载荷的队列,例如 - [10,20,30,40,50,60,70],现在我想将这些有效载荷分配到3辆卡车(或n辆卡车),这样每辆卡车的重量几乎相等,最好的方法是做什么

  
    

请注意,它是一个队列,任何数量的元素都可以在队列中,我们只知道卡车可以处理它。

         

我们只能看到队列中的顶部元素,作为其FIFO。

  

可能的解决方案: - 1.你可以将它们平均并保持有效载荷接近平均重量,这不是面试官所说的好解决方案

1 个答案:

答案 0 :(得分:0)

我们仍然不知道完整的问题,但我很确定它有一个多项式时间动态编程解决方案。

我的理解是,我们有一个m项目的队列,我们​​将用n卡车填满。每辆卡车依次备份到队列中,装满一块物品,然后开走。我们知道可用物品的整个队列。我们希望卡车尽可能地“#34;”。为了论证,让我们说我们希望最小化理论平均值与每辆卡车的差异之差的平方和。

我们需要做的是为i中的每个项目1..mk中的每个1..n创建实际卡车与实际卡车之间差异的最小平方和理论上的答案,如果我们刚刚完成k卡车的填充。这是一个O(nm)数据结构,每个值的填充O(m)的工作总数为O(nm^2)

(寻求最小化不同的指标,你可以获得更大的多项式。一些指标允许比这个更快的解决方案。)