二进制集合枚举子集

Posted Mychael

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二进制集合枚举子集相关的知识,希望对你有一定的参考价值。

枚举一个二进制集合的子集,可以看做原集合忽略0之后不断-1
就有了这样一种算法:

    for (int i = s; i; i = (i - 1) &s)

i - 1使得末尾的0全部变成1,但是由于&s,原来是0的位无论如何也不会变成1,但是原来是1的位就形成了不断-1的模式

以上是关于二进制集合枚举子集的主要内容,如果未能解决你的问题,请参考以下文章

做实验 解题报告(二进制枚举子集)

子集枚举的二进制算法

二进制枚举子集技巧

UVa1354 ——天平难题

集合枚举

POJ - 3977 Subset(二分+折半枚举)