约 10 分钟
用二进制位表示集合,第 i 位为 1 表示选了第 i 个元素。枚举一个集合 m 的所有非空子集:for(int s=m; s; s=(s-1)&m),s 会不重不漏地取遍每个子集。
for(int s=m; s; s=(s-1)&m)
集合 m=3(11) 有几个非空子集?
登录 后可看答案