Re: [問題] 有關排列組合的問題

看板Prob_Solve (計算數學 Problem Solving)作者 (...)時間13年前 (2012/01/05 14:51), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《linkone (小豆豆)》之銘言: : 假設有數字 1 2 3 排列組合為 213, 312, 123 ..... : 若單純要求出排列組合, 有一段演算法可以求出來, : 但是 他求出來的順序 123,132,213,231,312,321 : 但是我想要的是 132 123 213 231 321 312 : 也就是 這一次得到的組合為上一個組合的兩個元素交換所形成 : ex ; 第一次求出來的組合為 132, 第二次的組合為 123 : 其中123是由132的2跟3 交換而成. : 不曉得有沒有演算法可以達成我的目標的呢?? 麻煩各位大大了 1. Steinhaus-Johnson-Trotter algorithm http://en.wikipedia.org/wiki/Steinhaus%E2%80%93Johnson%E2%80%93Trotter_algorithm 2. permute(i) if i == N output A[N] else for j = i to N do swap(A[i], A[j]) permute(i+1) swap(A[i], A[j]) 3. next permuatation http://en.wikipedia.org/wiki/Permutation#Algorithms_to_generate_permutations 不知道這些是不是你需要的? -- 不負責任猜測: 如果用bitwise operation 感覺上一個for迴圈就可以寫完的樣子 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.230.122.156 ※ 編輯: DJWS 來自: 61.230.122.156 (01/05 14:55)
文章代碼(AID): #1F1KY3bj (Prob_Solve)
討論串 (同標題文章)
文章代碼(AID): #1F1KY3bj (Prob_Solve)