这个主要是通过二进制来生成子集,比如三个元素总共二进制数有2^3个,然后通过0---2^3中每个数和1进行位于然后得出哪位有1最后就可以得出每个子集
void print_subset(int n,int s) 2 { 3 for(int i = 0;i<n;i++) 4 { 5 //cout << s << " " << i << " " << (s&(1<<i)) << endl; 6 if(s&(1<<i)) cout << i << " "; 7 } 8 cout << endl; 9 } 10 void print_subset_5(int n) 11 { 12 for(int i = 0;i<(1<<n);i++) 13 { 14 //cout << i << endl; 15 print_subset(n,i); 16 } 17 }