我知道“算法设计手册”中充分讨论了“没有重新排列的整数分区”的问题:
“问题:没有重新排列的整数分区 输入:非负数的排列S {s1,... 。 。 ,sn}和整数k。输出:将分区S分成k个或更少的范围,以最小化所有范围的最大总和,而无需重新排序任何数字。“
示例:对以下内容进行分区: 100 200 300 400 500 | 600 700 | 800 900
重整整数的可能性有什么问题?任何链接/参考都会有所帮助。感谢
答案 0 :(得分:0)
如果您能够重新排列元素,则基本上有一个 set 作为输入,这是bin packing problem的变体。
2个范围的特殊情况称为partition problem,您需要找到S1,S2
的子集S
,以便sum(S1) = sum(S2)
s.t. S1 [union] S2 = S
和S1 [intersection S2 = {}
不幸的是,这些问题是NP-Complete,并且没有已知的多项式解决方案,但有一个dynamic programming pseudo-polynomial one。