已知一个集合,其子集包括空集和本身。怎样将所有的子集打印出来?最简单的O(N^3)算法不难想到,但是太过于朴素,应该还有更巧的方法。
我们已知,一个元素个数为n的集合,其子集个数为2^n个。比如set { 1, 2 },含有两个元素,一共有四个子集,分别为{ },{ 1 },{ 2 },{ 1,2 }。 我们取一个只有两位的bitset,显然这个两位的bitset只有四种组合,00、01、10、11。 假设我们让bitset的每一位对应上面集合中的一个元素,那么集合的每个子集就可以用bitset的一个组合来表示:
{ } 对应 00
{ 1 } 对应 01