我有一个简单的算法问题。
S
和一个正整数i
。S
(或S
的子集)的总和是其元素的总和。s
的{{1}}子集,其总和不超过S
并且是“最大求和” - 意味着i
的其他子集没有更多总和超过S
而不超过s
。我提出的一个简单的解决方案是遍历i
的每组幂集并对整数求和,用我寻找的属性跟踪集合,但这个算法显然是指数的。 / p>
这个问题必须有一个众所周知的名字,因为我不认为我是第一个遇到这个问题的人。有人可以帮助我吗?
答案 0 :(得分:0)
使用动态编程解决集合的子集和问题。
然后将填充表从第i个条目扫描到较小的值,直到找到非零条目(即存在这样的总和)。这是不超过给定值的子集的最大总和。