找到最小数量N的算法,用于在X子集中对堆栈值进行分区,其总和小于N

时间:2018-05-09 19:32:06

标签: algorithm partitioning subset-sum

我有一个带有整数值对象的堆栈。我想买一辆容量为N(N未知)的卡车,以确保我可以在最大X圈内运输所有物体。

X是众所周知的。 换句话说,我必须对堆栈进行分区(必须保持对象的顺序)在总和小于N的最大X子集中找到最小N.

你能帮我算一个算法或想法吗? 感谢。

1 个答案:

答案 0 :(得分:1)

如果您声明,"必须保持对象的顺序,"然后我们可以在N O(|objects| * log m)上使用二进制搜索来解决此问题,其中m是总和。

关于多路编号分区的评论中链接的论文@hlt将适用于对象'订单可以重新排列。在这种情况下,在订单修复的情况下,我们可以尝试不同的N,尽可能多地打包分区。如果我们选择的N太小,我们最终会超过X。这使N有序,因此可以搜索。