二进制枚举子集
来源:互联网 发布:vs 编程最佳字体 编辑:程序博客网 时间:2024/05/22 14:31
今天本来在撸uva的1151但其中用到子集的枚举就顺便填补了 这个空白。
/*算法思想例如求4个元素 3 2 1 0 的子集。那么用二进制的1代表每一位是否选中。十进制二进制0 0000 代表空集//这些都是s的取值1 0001 代表{0}2 0010 代表{1}3 0011 代表{0,1}4 0100 代表{2} ...15 1110 代表{3,2,1}16 1111 代表{3,2,1,0}如果n很大的话可以用字符串模拟二进制*/# include <stdio.h># include <algorithm>using namespace std;//二进制法求子集void print_subset(int n,int s){for(int i=0;i<n;i++){if(s & (1<<i)) //1左移i位,监测s的哪一位为1,为1的话输出printf("%d ",i);}printf("\n");}int main() {int n=3;for(int i=0;i<(1<<n);i++){//1左移n位等价于2^n-1.因为子集个数2^n-1print_subset(n,i);}return 0;}///n个元素一共有2^n的子集个数,把这个数转化成二进制则对应每一位会有0 1两种选择,0代表不选择对应位置的元素,1代表选择。然后用s来模拟其子集的选取。///如0011则其对应输出为0010和0001,对应十进制则为3的子集。
阅读全文
0 0
- 二进制枚举子集
- 二进制枚举集合子集
- 二进制枚举子集
- 二进制枚举子集
- 二进制-枚举子集
- C++二进制枚举子集
- 二进制枚举子集
- 二进制枚举子集
- 二进制枚举法枚举子集
- 使用二进制数枚举子集
- USACO Healthy Holsteins(二进制枚举子集)
- 二进制枚举子集与容斥
- UVA658,隐式图+最短路+二进制子集枚举
- 【UVA】11464-Even Parity(二进制枚举子集)
- 枚举一个数二进制表示下的子集
- HDU 4770 Lights Against Dudely(二进制枚举子集)
- 简单记录一下二进制枚举状态子集的技巧
- EOJ 1082 Easy to AC(枚举+二进制子集法)
- Android 8.0后台执行限制
- 11.5模拟赛总结
- 堆排序
- Master of Phi(2017CCPC杭州站现场赛B题)(dfs)
- 多态
- 二进制枚举子集
- 贪心算法解决汽车加油问题
- 递归和非递归分别实现strlen
- VM下的linux虚拟机ifconfig没有IP
- 尘埃落定-校招求职历程
- ionic3开发系列——如何导入自定义资源图标库
- Android安卓——Intent通信(1)
- 青岛游记2
- 使用三目运算嵌套方法 或 临时变量方法: 获取三个整数中最大值的数