枚举子集的写法

总结一下。

设S表示一个01状态集,那么它的所有非空子集x可以通过以下代码枚举。

 

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

 

比如S=1011,则x分别为:1011, 1010, 1001, 1000, 0011, 0010, 0001。忽略S中第二位的0其实就是111, 110, 101, 100, 011, 010, 001。

posted @ 2016-07-27 19:19  Commence  阅读(502)  评论(0编辑  收藏  举报