[問題] 在一個給予的mask中,例舉所有k-bit 組合
各位大大好。後正在使用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嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.21.176.170 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1706066335.A.480.html
※ 編輯: dnol (211.21.176.170 臺灣), 01/24/2024 11:20:13
推
01/24 11:52,
10月前
, 1F
01/24 11:52, 1F
推
01/24 11:55,
10月前
, 2F
01/24 11:55, 2F
→
01/24 12:00,
10月前
, 3F
01/24 12:00, 3F
→
01/24 12:01,
10月前
, 4F
01/24 12:01, 4F
→
01/24 12:16,
10月前
, 5F
01/24 12:16, 5F
推
01/24 13:15,
10月前
, 6F
01/24 13:15, 6F
→
01/25 06:40,
10月前
, 7F
01/25 06:40, 7F
推
01/25 10:01,
10月前
, 8F
01/25 10:01, 8F
→
01/25 10:03,
10月前
, 9F
01/25 10:03, 9F
→
01/25 10:03,
10月前
, 10F
01/25 10:03, 10F
推
01/25 10:08,
10月前
, 11F
01/25 10:08, 11F
→
01/25 10:09,
10月前
, 12F
01/25 10:09, 12F
推
01/27 08:14,
10月前
, 13F
01/27 08:14, 13F
→
02/01 10:17,
9月前
, 14F
02/01 10:17, 14F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 3 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章