枚举一个集合的全部子集

一个神奇的算法,在题目中看到的,单独拿出来整理

枚举一个集合S(用一个二进制表示)的全部子集S0:

for(int S0 = S; S0; S0 = (S0-1)&S)

{
}

还有不包括S自己的:
for(int S0 = (S-1)&S; S0; S0 = (S0-1)&S)
{
}
 

转载于:https://www.cnblogs.com/FuTaimeng/p/5414491.htmlhtml