您将获得正整数列表S.您将创建两个子列表S1和S2,从S中获取元素,例如
例如:如果S = [2,6,5,1,2,5]则答案为10,(S1 = [6,2,2],S2 = [5,5],忽略1 )
约束:
(i)如果N是S的长度,则1 <= N <= 50
(ii)如果MAX是S的最大元素,则1 <= MAX <= 1000
(iii)如果SUM是S的总和,则1 <= SUM <= 1000
我只能在蛮力方法之下思考:
为1&lt; = SUM&lt; = 1000,我们的答案可以在0到500之间。
因此,对于S的每个子集(SUB),我找到SUB的和(SUBSUM)并检查是否可以使用子集和算法从列表S-SUB获得SUBSUM。我正在返回最大的SUBSUM。所以我的时间复杂度是O(N *(SUM / 2)* 2 ^ N)
有更快的方法吗?
任何DP方法?