分区问题动态编程的替代方法

时间:2019-10-23 02:34:22

标签: algorithm dynamic-programming

这个问题与著名的分区问题有关。

我正在对该问题进行一些学习,发现大多数解决方案都遵循“将一组划分为两个,以使它们的差异最小”,或“确定两个子集的总和是否相同”

我想知道是否存在以下问题的解决方案:“将集合分成两部分,使它们的差值为d”

例如,它们的差可能是1或2。

subset({3,4,9}, diff=2) = [{9}, {3,4}]

因为子集1的总和是9,子集2的总和是7,所以我们得到了所需的差2。

有这样的问题吗?

1 个答案:

答案 0 :(得分:0)

此问题仅等效于subset-sum one
解决sum=overall_sum/2 + d/2的子集总和,您将获得所需的子集作为解决方案,其余的子集