生成{0,1,2,3}的子集的简便方法:
#include <cstdio>
void print_subset(int n,int s){
for(int i=0;i<n;i++)
if(s&(1<<i)) printf("%d ",i);
printf("\n");
}
int main(){
int n=4;
for(int i=0;i<(1<<n);i++)
print_subset(n,i);
return 0;
}