通过位运算求一个集合的子集
来源:互联网 发布:万国数据fm经理待遇 编辑:程序博客网 时间:2024/05/17 06:01
整体的思路:
首先要清楚位运算的意义:
1<<n
的意义是2的n次方
num<<i
就是num化为二进制的存储,整体左移i位
num>>i
就是num化为二进制的存储,整体左移i位
这样我 的第一个循环0,1,2,,,,,,((2^n) -1)
就是将一个集合的所有可能的组合方式编号
例如一个组合 {3,2,1}
0:000:空集
1:001 :3
2:010:2
3:011:2,3
4:100:1
5:101:1,3
6:110:1,2
7:111:1,2,3
这样我们与(1<<i
)做按位做与运算
1<<0:3
1<<1:2
1<<2:1
当这个下标未在集合中时,则结果为0
反之,则在
简洁的代码
for(int i=0;i<(1<<n);i++){ print_subset(n,i,num);}void print_subset(int n,int s,double[] num){ for(int i=0;i<n;i++){ if((s&(1<<i))!=0){ System.out.print(num[i]+" "); } } System.out.println(); }
阅读全文
0 0
- 【Java】通过位运算求一个集合的所有子集
- 通过位运算求一个集合的子集
- 位运算之求集合的所有子集
- 求一个集合的子集
- 给力!简单!易懂!位运算之求集合的所有子集
- 【EPI】通过位运算求集合的全排列
- 位运算求子集数
- 求一个集合的所有子集
- 求一个集合的所有子集
- 求一个集合的所有子集
- 求一个集合的所有子集问题
- 求一个集合的所有子集
- 求一个集合的所有子集
- 求一个集合的所有子集问题
- 求一个集合的所有子集问题
- 求一个集合的所有子集
- 求一个集合的所有子集问题
- 求一个集合所有可能的子集
- Linux学习之文件系统与文件系统的压缩与打包
- 快速了解JavaScript
- Learning Compact Binary Face Descriptor for Face Recognition 阅读笔记
- 安卓自定义按钮
- 一级购物车(自定义view和自定义拦截器interceptor)
- 通过位运算求一个集合的子集
- 顺序表和有序表的查找以及有序表的递归查找
- Tensorlayer学习笔记——卷积神经网络
- 将exe和dll文件打包成单一的启动文件
- java-网络编程Lesson1
- junit单元测试时,出现java.lang.ClassNotFoundException
- 并查集的优化
- ACM博弈论总结
- FFT详解