标签: algorithm dynamic-programming
这个问题与著名的分区问题有关。
我正在对该问题进行一些学习,发现大多数解决方案都遵循“将一组划分为两个,以使它们的差异最小”,或“确定两个子集的总和是否相同” >
我想知道是否存在以下问题的解决方案:“将集合分成两部分,使它们的差值为d”
例如,它们的差可能是1或2。
subset({3,4,9}, diff=2) = [{9}, {3,4}]
因为子集1的总和是9,子集2的总和是7,所以我们得到了所需的差2。
有这样的问题吗?
答案 0 :(得分:0)
此问题仅等效于subset-sum one。 解决sum=overall_sum/2 + d/2的子集总和,您将获得所需的子集作为解决方案,其余的子集
sum=overall_sum/2 + d/2