我在 wiki http://en.wikipedia.org/wiki/Subset_sum_problem#Pseudo-polynomial_time_dynamic_programming_solution上阅读了关于 sumsubsetproblem 的内容,并想知道我是否可以将其调整为以下问题:
我需要所有可能的子集 ss1, ss2 受 n1 限制,n2 是 2 个集合 s1,s2 中的元素数
我将使用 S1 的元素作为正元素,使用 s2 的元素作为负元素来回答大小为 n1 和 n2 的子集总和是否等于 0 的问题
我在这里的特殊问题是集合可以包含 0 本身,我想我可以通过将这些元素设置为 1 或 -1 来解决这个问题( 1 不是我输入的成员,它将是 (0,10,50,100,200,500) )和下一个问题是这个算法只给了我是或否,但我已经知道这个答案(它的前提条件)我需要的是结果。
这还不够快吗?我在这里读过一个 perl 实现,其中 OP 发布了一个包含运行时的列表,一个 30 个元素的计算时间为 30-40 秒,这对于我的需求来说太慢了,我需要在 java 中实现,目前为止据我所知,甚至比 perl 还要慢
问候
短剑