给定功率集子集的和的集合时找到集合的算法

时间:2018-09-03 11:33:47

标签: algorithm sorting

A个{em>正数的一组N中,Sum的一组{em>所有可能的子集 {1}}形成并给予。我们必须找到集合A

我的方法是先排序,然后从最大数中依次提取最大的A,以找到集合中的元素。这种方法错误是什么?

1 个答案:

答案 0 :(得分:1)

将元素集设为{a,b,c,d},在这种情况下,元素集的可能子集总和为(1) {a},(2)< / em> {b + c},(3) {b + c + d},(4) {a + b + c + d}等。但是,最大子集总和为(4),并且可见,(4)-(2)的减法将得出{a+d},这只是集合的另一个子集总和,而不是实际元素。

解决问题的一种可能方法是对数组进行排序,然后开始从麻袋中最小的元素中拾取元素。每次选择一个新元素时,我们都会从维护的麻袋中计算出所有可能包括此元素和其他元素的子集总和,然后从给定的子集总和列表中删除这些计算出的子集总和。然后,我们继续从给定的子集列表中选取下一个最小的元素,该元素尚未删除。

编辑:为给定问题添加了可能的解决方案。