子集算法

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

猜你喜欢

转载自www.cnblogs.com/swithun333/p/12604317.html