二进制枚举子集技巧

Posted ppprseter

tags:

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

提供一个神奇的姿势

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

稍微解释一下了,(sta)保存的0,1即为原来的需要求子集的集合,(i)即为遍历的子集

我们取的子集即是把当前集的元素取或不取,即(sta)的1取或不取

我们减去1,即是把最后一位的1变成0,最后一个1后面的0全变1,和原来的&一下,变的1全回去了,也把最后一位搞成0了

剩下的以此类推就差不多了

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

子集的生成—二进制枚举

枚举子集&高位前缀和

二进制集合枚举子集

子集枚举的二进制算法

二进制枚举

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