学过集合我们都知道
对于一个元素个数为n的集合而言,其所有子集的个数是2ⁿ+1个
巧的很的是对于这个问题,如果说你一开始不知道怎么下手
而有对二进制有所了解的话
经过一小段时间的对视那就会发现其和二进制会有多么的相近
为什么这么讲
二进制 是关于2的一个计数进制 满二进一这是我们所知道的
一个三位的二进制 其范围是 0-8 共九个数
集合中有三个数,其中所有的情况是2³+1 =9种
对于一个三个元素的集合而言
其子集的情况可以通过
一个三位数的二进制来模拟表示
每个元素在子集中是否出现
一个n个元素的集合的子集个数
可以完全对应于 n位的二进制数的所有整数位
看到这里 就不难想到 集合的所有子集情况可以借助二进制来获得
由代码获得
算法思想 来自于此
贴个python算法
#coding=gbk
n = int(input("想要创建一个多大的集合:"))
lst = [None]*n
for i in range(n):#自动补入n个元素
lst[i] = i+1
for i in range(2**len(lst)):#循环2的n次方
n = i
j = 0
print('(',end = '')
while(n):
i = n % 2
if i :
print(lst[j] , end = '')
j += 1
n = int(n/2)
print(')', end = '')
这是一种方法