看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《deangogi (一個憤青的概念)》之銘言: : STL裡的next_permutation()似乎是把原來的字串去做排列而已 也就是最多6!情況 : 而我所想要的功能需要求出C(6取一)*35 + C(6取2)*35*35種情況 : 請問有什麼方法可以實現? 排列(permuation)和組合(combination)是兩件不同事情 next_permuation是找到下一個排列,跟組合無關 想求所有組合,方法很多,例如"二進位數字逐次加一"、Gray code、Banker's sequence 想求剛好取k個的所有組合,可以參考下面這段程式碼 // nCk for (int comb = (1 << k) - 1; comb < 1 << n;) { print comb in binary; int x = comb & -comb, y = comb + x; comb = ((comb & ~y) / x >> 1) | y; } 或者用前面板友推文說的,000001和000011分別拿去做next_permutation 以上 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.250.78.43 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1396320341.A.493.html ※ 編輯: DJWS (111.250.78.43), 04/01/2014 11:04:02
deangogi:感謝指教 04/01 12:28