各位大大好。後正在使用C開發一個演算法。
後目前面臨的問題是,
how to enumerate all k-bit combinations for a given mask.
比如說。我有一個mask。1100101。當k=2時。
我想要有效率的例舉所有含有2個1的組合。如下。
0000101
0100001
1000001
0100100
1000100
1100000
我目前是用下面的code 產生出所有的sub-mask,但然跳掉k!=2的case。
for(unsigned sub_mask = (mask - 1) & mask; sub_mask;
sub_mask = (sub_mask - 1) & mask) {
if(__builtin_popcount(sub_mask) != k ) //k=2
continue;
...
}
請問有辦法只iterate k=2的case嗎?