Algorithm 查找最小数N以划分堆栈的算法';X子集中s值的和小于N

Algorithm 查找最小数N以划分堆栈的算法';X子集中s值的和小于N,algorithm,partitioning,subset-sum,Algorithm,Partitioning,Subset Sum,我有一个包含整数值对象的堆栈。我想买一辆容量为N(N未知)的卡车,以确保我能以最大X圈的速度运输所有物体 X是已知的。 换句话说,我必须将堆栈(对象的顺序必须保持)划分为最大X子集,且总和小于N,然后找到最小N 你能帮我一个算法或想法吗? 谢谢。如果如您所述,“必须保持对象的顺序”,那么我们可以通过在N中的O(|objects |*log m)中进行二进制搜索来解决这个问题,其中m是总和 @hlt在一篇关于多路数字划分的评论中链接到的论文,如果可以重新排列对象的顺序,将适用。在这种情况下,如果顺

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

X是已知的。 换句话说,我必须将堆栈(对象的顺序必须保持)划分为最大X子集,且总和小于N,然后找到最小N

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

如果如您所述,“必须保持对象的顺序”,那么我们可以通过在
N
中的
O(|objects |*log m)
中进行二进制搜索来解决这个问题,其中
m
是总和


@hlt在一篇关于多路数字划分的评论中链接到的论文,如果可以重新排列对象的顺序,将适用。在这种情况下,如果顺序是固定的,我们可以尝试不同的
N
s,尽可能多地打包分区。如果我们选择的
N
太小,我们最终将超过
X
。这使得
N
有序,因此可以进行搜索。

我猜您希望找到N的最小值,因为N=sum(所有堆栈的总和)是解决问题的一个微不足道的解决方案。例如,请参见一些指针(从维基百科的“分区问题”页面不知羞耻地窃取的链接)是的。谢谢。从过去的经验来看,可能是C++的人认为问题是“家庭作业”之类的。我投了赞成票。