有關排列的演算法Algorithm
上一篇文章 [GATOR+HOJA=IDV*TW]寫了個小程式求得解答,但是在程式寫作過程中,最麻煩的是要先取得0-9 10個數字排列的所有可能性。根據排列組合的公式,這有10! (= 3628800)個。
但是是那些呢?如果用10 個for loop,是不切實際的,如果要排列的不是10個元素時,該如何?
試想,如果有兩個數(1, 2)要排序:
[1, 2] => (1,2) , (2,1)
當第三個數(3)加進來後:
[1,2,3] => (1,2) + 3 => (3,1,2) , (1,3,2), (1,2,3)
(2,1) +3 => (3,2,1), (2,3,1), (2,1,3)
所以可以得出,每增加一個元素,就是將這增加的元素,插到原來所有可能排列的所有可能位置(前,中,.....後)
這也就是 http://gatorliu.googlepages.com/factor.pl 的Algorithm
此外在Perl實做上,全部利用array處理,在元素超過9個後,造成我系統crash,所以我改用字串處理。
迴響 |
0 引用


