Re: [問題] C++排列組合

看板C_and_CPP (C/C++)作者 (...)時間12年前 (2014/04/01 10:45), 12年前編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《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

04/01 12:28, , 1F
感謝指教
04/01 12:28, 1F
文章代碼(AID): #1JEYXLIJ (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1JEYXLIJ (C_and_CPP)