欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C++竞赛编程技巧

程序员文章站 2022-07-02 20:21:04
...

二进制集合枚举子集

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

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

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

相关标签: 技巧