码迷,mamicode.com
首页 > 其他好文 > 详细

【模板】子集生成 二进制法

时间:2017-09-07 17:02:43      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:子集生成   位置   code   getc   printf   pre   amp   生成   read   

此文为博主原创,转载时请通知博主,并把原文链接放在正文醒目位置。

 

子集生成问题:给出一个正整数n,输入含有1~n共n个元素的集合的所有子集。

 

模板代码(qwq表示空集):

 1 #include<cstdio>
 2 #include<algorithm>
 3 #include<cmath>
 4 #include<cstring> 
 5 
 6 inline void read(int &x)
 7 {
 8     char ch = getchar(),c = ch;x = 0;
 9     while(ch < 0 || ch > 9) c = ch,ch = getchar();
10     while(ch <= 9 && ch >= 0) x = (x<<1)+(x<<3)+ch-0,ch = getchar();
11     if(c == -) x = -x;
12 }
13 
14 int num[105];
15 
16 int main()
17 {//子集生成 
18     int n;
19     read(n);
20     for(int cnt = 0;cnt < (1<<n);++ cnt)
21     {
22         for(int i = 0;(1<<i) <= cnt;++ i)
23             if(cnt&(1<<i)) printf("%d ",i+1);
24         if(cnt == 0)
25             printf("qwq");
26         puts("");
27     }
28     return 0;
29 }

 

【模板】子集生成 二进制法

标签:子集生成   位置   code   getc   printf   pre   amp   生成   read   

原文地址:http://www.cnblogs.com/shingen/p/7490447.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!