[問題] 組合排列?

看板java作者 (kerry)時間18年前 (2008/01/10 23:56), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串1/3 (看更多)
問題定義:   在一有次序的n個字元中,要取k個,且此k個也依然要有依序性的組合   例如:"ABCDEF"(依字母大小排列) 六個字元要取 4個的組合      有:ABCD, ABCE, ABCF, ABDE, ABDF, ABEF,        ACDE, ACDF, ADEF, BCDE, BCDF, BCEF, BDEF, CDEF 問題點:   想了好幾天,一直想不出來,依照平常的做法似乎要如下:   for (i = 0 ; i < str.length() - k + 1 ; i++){ for ( j = i + 1 ; j < i + str.length() - k + 1; j++){ for ( m = j + 1; m < j + str.length() - k + 1; m++){ for .. temp = 第i個字元+第j個字元.. subset+= temp;             用四個迴圈,第一個迴圈去固定第一個字元然後去迴圈第2, 3, 4個字元   直到四個迴圈跑完可得最後全部的集合,但這樣的方式總是很土法鍊鋼   而且k的值也不固定,也有可能六取三,請問各位版大們是否有更好的建議,   小弟試過用遞迴,但似乎功力太弱,一直跑不出來,麻煩各位前輩 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.228.156.185

01/11 21:26, , 1F
也許你可以先試著用遞廻做出 AAAA, AAAB, ..., FFFF
01/11 21:26, 1F

01/11 21:28, , 2F
接著只要加上一些判斷即可
01/11 21:28, 2F
文章代碼(AID): #17Xa0Vwn (java)
文章代碼(AID): #17Xa0Vwn (java)