枚举二进制子集

for(int j=w;j;j=(j-1)&w);

for(int j=W;j;j=(j-1)&w);
View Code

每次把最后一个1赋为0,并把剩下的0赋成1,并与原数取&

这样能做到枚举全每一个1位是0和1时的子集的情况。

原文地址:https://www.cnblogs.com/seamtn/p/11562292.html