您的位置:首页 > 其它

二进制枚举的实现

2017-07-27 21:03 204 查看

二进制枚举

…………..

//二进制枚举
void print_subset(int n,int s){
for(int i=0;i<n;i++){
if(s&(1<<i)){
printf("%d"\n,i);
}
}
}
for(int i=0;i<=(1<<n);i++){
print_subset(n,i);
}
//二进制枚举
//n:集合1到n  s:第s种个集合
//'&' 1 & 1 = 1    如:第二个集合 s=3/(011) 当i==0时 (1<<0)=001
//                     这时   (011)&(001)=001 0被选中
//                     当i==1时   (1<<1)=010   (011)&(010)=010 1被选中
//                     所以s=3/(001)  集合为 0.1
//1<<n==2的n次方 代表有多少子集
//    举例当n=3时i--》000 001 010  011   100   101   110    111
//print_subset中的s   空   0   1   0,1   2    0,2  1,2   0,1,2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: