二进制枚举
来源:互联网 发布:自动通话录音软件 编辑:程序博客网 时间:2024/06/07 17:17
二进制:所谓的二进制,就是逢二进一的计数方法。我们计算机能识别的也都是二进制数,也就是最常见的01串。
枚举:就是例举出所有的情况。
二进制枚举:我们都知道二进制数是只有0和1构成,在c语言中1代表真,0代表假。对于01数列,我们可以认为1代表取用,0代表不取用。
举例:假设我们要求出某个集合的所有子集。我们可以二进制枚举的方法,一共有 1<<n 个子集,所以列出1到(1<<n)的所有二进制数,这里的每个数就是对应的每个集合。然后用过&运算的方式,判断所有的位上是1还是0,通过&上(1<<m),判断m位上是1,还是0,如果m位上是0,那结果是0,如果m上是1,结果是1.
注释:上述讲述中牵扯位运算的知识,不了解的可以先去了解一下位运算。
#include<bits/stdc++.h>using namespace std;void print_subset(int n,int s){for(int i = 0 ; i < n ; i++)if(s&(1 << i))printf("%d",i);printf("\n");}int main(){while(1){int n;cin >> n;for(int i = 0 ; i < (1 << n) ; i++)print_subset(n,i);}return 0; }
阅读全文
0 0
- 二进制枚举
- 二进制枚举
- 二进制枚举
- 二进制枚举
- 二进制枚举
- 二进制枚举
- 二进制枚举
- 二进制枚举
- 二进制枚举法枚举子集
- 二进制序列枚举
- 二进制枚举子集
- POJ_1753_Flip Game(二进制枚举)
- 二进制枚举集合子集
- 二进制枚举子集
- POJ_3279_Fliptile_搜索、二进制枚举
- POJ 3279二进制枚举
- 二进制枚举子集
- hdu1796(二进制枚举)
- mysql死锁排查
- 按键
- XXE攻防
- MongoDB基本(CRUD)
- MATLAB中的varargin,varargout在函数中运用
- 二进制枚举
- 异常处理(二)-----C++异常机制
- 闭包,装饰器,迭代器,生成器
- 每日練習20171102
- LuoguP2680/UOJ150[NOIP2015] 运输计划 解题报告【二分答案+树上操作(LCA)+树上差分】
- Java值类型和引用类型,以及复制的是什么东西
- 总结
- 决策树
- 生平第一篇博客