位运算求子集
紫书第189页
给你一个集合,让你求集合的所有子集;
我们都知道长为n的集合子集个数为 2^n 个(包含了空集);
一般都是递归求子集,没想到还可以运用位运算求;
具体思路就不展开了,总的来说就是每个元素在子集里都有两种情况(取或不取),可以用0和1来代表,这就跟位运算的性质所吻合;
代码:
#include<bits/stdc++.h>
#define LL long long
#define pa pair<int,int>
#define lson k<<1
#define rson k<<1|1
#