子集算法

这个主要是通过二进制来生成子集,比如三个元素总共二进制数有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 }

浙公网安备 33010602011771号