在我的考试准备期间,我发现了这个我无法解决的问题,也没有在网上找到解决方案。 我一直在苦苦挣扎几个小时试图找出这个没有运气的。
问题如下: 如果存在2个子集 T 且 S / T 的集合 S 具有相等的总和,则返回true,如果存在则返回false不,在多项式时间内。
假设给你一个集合S,上面的黑框找到一个子集T,其中T的总和与(S / T)之和相等。
提前感谢。
答案 0 :(得分:1)
对于集合中的每对数字A和B,您可以进行测试以查看它们是否都位于其中一个有效分区中的同一分区中:从集合中删除A和B并替换为C, A + B之和。如果黑框对新集合返回true,则A和B必须是同一分区的一部分。如果是这样,请将C保留在集合中。如果没有,请将A和B重新放入并尝试另一对。
重复直到集合中只剩下2个数字,跟踪你加在一起产生的数字。这为您提供了两个分区。