Re: [問題] 有關排列組合的問題
看板Prob_Solve (計算數學 Problem Solving)作者DJWS (...)時間13年前 (2012/01/05 14:51)推噓0(0推 0噓 0→)留言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)
討論串 (同標題文章)
Prob_Solve 近期熱門文章
PTT數位生活區 即時熱門文章
-2
11