所有的数字都可以用二进制表示出来。
那么对于一个含有n个元素的集合,其所有子集的可能情况数是$2^n$,因为对单个元素只有选和不选两种选择。
如果要暴力枚举某个集合的所有子集的可能性,可以使用二进制来表示当前状态。
如果当前数字在该位上是1代表选中这一位的元素,否则代表未选中。
基本代码:
for(int i=0;i<(1<<n);++i)
for(int j=0;j<n;++j)
if(i&(1<<j)) //选中
else //未选中
注意:$2^j$有可能非常大