给定整数集的子集,其和为常数N:Java

时间:2011-06-06 11:01:52

标签: java math data-structures integer subset-sum

给定一组整数,如何找到一个总和为给定值的子集......子集问题?

示例:S = {1,2,4,3,2,5}且n = 7 查找总和为n的可能子集。 我试图谷歌发现很多链接,但不清楚。 我们如何在java中解决这个问题,使用什么数据结构及其复杂性?

2 个答案:

答案 0 :(得分:2)

分三步:

  1. 找到S的powerset(S的所有子集的集合)

  2. 计算每个子集的总和

  3. 过滤掉未汇总为7的子集。

答案 1 :(得分:1)

我不会给你任何代码,但解释它是如何工作的。

  1. 0 to (2^k-1)
  2. 运行循环
  3. 对于1中的每个值,其二进制表示中的1表示选择此值,否则为0。
  4. 测试所选数字的总和是否等于 n
  5. 上述方法将评估给定集合的每个可能子集。

    如果值的上限很小,则可以使用动态编程方法。