二进制表示的集合 枚举子集 的快速方法。 1条回复 令要 枚举子集 的集合为S ,每一个二进制位表示一个元素是否存在。 则可 for (int S0 = S; S0; S0 = (S0 – 1)&S ) 证明: (S0 – 1)&S必然是S的子集 因为是从最后一位开始减小,所以(S0 – 1)&S必然是最十进制数位上最靠近S0的S的自己。 故可以用(S0 – 1) & S 来生成下一个子集并得到所有S的子集。
一个人也像一把小提琴,你的心态好比琴弦,调整好了心态,别人就不会轻视你的价值。