模板子集生成 二进制法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模板子集生成 二进制法相关的知识,希望对你有一定的参考价值。
此文为博主原创,转载时请通知博主,并把原文链接放在正文醒目位置。
子集生成问题:给出一个正整数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 }
以上是关于模板子集生成 二进制法的主要内容,如果未能解决你的问题,请参考以下文章