Skip to content

Enumerate subset

整数 \(S\) のビットが立つ位置を要素としたときの部分集合を列挙

C++

1
2
3
4
5
void enumerate_subset(int S) {
    // S 自身も含める時は T = S で初期化する
    for(int T = S & (S - 1); T > 0; T = S & (T - 1)) {
    }
}