【发布时间】:2012-07-29 06:25:35
【问题描述】:
给定一个N非负整数列表,提出一个算法来检查列表中X数字的总和是否等于剩余的N-X。
换句话说,Subset sum problem 的一个更简单的情况涉及整个集合。
尝试的解决方案
按降序对列表的元素进行排序。将变量SUM 初始化为第一个元素。删除第一个元素(最大,a(1))。让a(n) 表示当前列表中的n-th 元素。
虽然列表有多个元素,
使
SUM等于SUM + a(1)或SUM - a(1),以最接近a(2)为准。 (最接近的意思是|a(2) - SUM_POSSIBLE|是最小值)。删除
a(1)。
如果SUM 等于-a(1) 或a(1),则存在线性和。
问题
我似乎无法解决上述算法,如果它是正确的,我想要一个证明。 如果它是错误的(更有可能),有没有办法在线性时间内完成?
PS:如果我做错了什么,请原谅:S
【问题讨论】:
标签: algorithm subset-sum