Powerset适用于大阵列尺寸

时间:2014-12-06 20:31:32

标签: c++ algorithm

我想找到一个大尺寸阵列(最多1500个)的powerset的所有子集的总和。我搜索过但无法找到有效的算法。

示例:

array=[1,2,3]

答案:

{} -> 0,{1} -> 1,{2} -> 2,{3} -> 3,{1,2} -> 3,{1,3} -> 4,{2,3} -> 5,{1,2,3} -> 6

有没有一种有效的方法呢?

1 个答案:

答案 0 :(得分:1)

有n个元素的数组有2 ^ n个子集。

每个元素都将出现在其中的一半中。

因此,所有子集的总和将是所有元素的总和乘以2 n-1