[問題] 利用整數的位元運算,列舉所有組合
看板Prob_Solve (計算數學 Problem Solving)作者xxxx9659 (嘎嘎嘎嘎嘎)時間2年前 (2022/01/24 19:22)推噓1(1推 0噓 3→)留言4則, 3人參與討論串1/1
最近在想一個問題,想要用一個整數,來代表一種組合
然後把 C(28, 5) 的所有組合,快速輪詢過一遍
C(28, 5) = 98280 有點大不好舉例,拿 C(6, 3) = 20 來當例子
var state = 56; //代表二進位的 111000
do {
console.log( state );
} while ( state = next(state) );
迴圈會印出以下20個值
56 //代表二進位的 111000
52 //代表二進位的 110100
50 //代表二進位的 110010
49 //代表二進位的 110001
44 //代表二進位的 101100
42 //代表二進位的 101010
41 //代表二進位的 101001
38 //代表二進位的 100110
37 //代表二進位的 100101
35 //代表二進位的 100011
28 //代表二進位的 011100
26 //代表二進位的 011010
25 //代表二進位的 011001
22 //代表二進位的 010110
21 //代表二進位的 010101
19 //代表二進位的 010011
14 //代表二進位的 001110
13 //代表二進位的 001101
11 //代表二進位的 001011
7 //代表二進位的 000111
位元運算 a & (a-1) 可以迅速的拔掉最低位元的1
左移右移 << >> 感覺也很好用
就在想說,能不能利用這種位元運算的高效率特性,來實作 next()
但是 next() 我還沒有實作出來... 不知道是不是真的可行
想說問問看各位大大的看法
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.227.45.150 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Prob_Solve/M.1643023362.A.417.html
→
01/24 20:05,
2年前
, 1F
01/24 20:05, 1F
→
01/24 20:05,
2年前
, 2F
01/24 20:05, 2F
推
01/25 02:25,
2年前
, 3F
01/25 02:25, 3F
→
01/25 17:14,
2年前
, 4F
01/25 17:14, 4F
Prob_Solve 近期熱門文章
PTT數位生活區 即時熱門文章