【发布时间】:2015-02-18 13:44:38
【问题描述】:
http://comproguide.blogspot.in/2013/10/subset-sum-problem.html
对此方法有一个简明的解释
但是,我通过一个小练习来列举这个算法,以找到 {1,2,3,4} 中总和为 4 的子集。
我注意到单元格 {1,1},{2,2} 返回 false。
我的逻辑理解错了吗?
还是该算法不认为该集合是其自身的子集?
我原以为 {1,1} 会返回一个真值,因为 1 相加。
【问题讨论】:
-
我认为它不会两次使用相同的值。虽然我想知道为什么您认为 {1,1} 会返回 true,因为它的总和不是 4 而 {2,2} 不会,因为它只能使用 2 一次。
-
矩阵[i][j] = true;表示存在数组 [0..j-1] 的子集,其中包含总和 i.....这意味着 {1,1} 表示总和为 1 的子集 - 或者不是这样?
-
总和不是 i。在示例中,它查找 sum = 100 然后 sum = 200 的子集。矩阵示例仅返回 true 或 false,因为它使用布尔表达式,在本例中,100 为 false,200 为 true。子集可以包含超过 2 个值,例如加起来 200 {37, 62, 101}
标签: java algorithm dynamic-programming