全排序問題的遞迴演算法

2021-08-25 07:06:23 字數 738 閱讀 3108

/** 

* @author [email protected]

* @creation date 2010-7-7 下午10:06:24

* *

* 對於乙個序列r=求全排列?

遞迴解法的思路:

(1)對於乙個序列r=,

它其中的每乙個數設為ri,它的全排列我們設為perm(r).

(2)對於r的全排列我們可以轉化成幾個小的問題:

4開頭,的全排列,

3開頭,的全排列,

5開頭,的全排列

即perm(r)=

其核心思想就是:將每個元素放到n個元素組成的佇列最前方,

然後對剩餘元素進行全排列,依次遞迴下去。

比如:a b c

首先將a放到最前方(跟第乙個元素交換),然後排列b c,然後將a放回本

來位置,結果 a b c; a c b

其次將b放到最前方(跟第乙個元素交換),然後排列a c,然後將b放回

結果 b a c; b c a

* */

public class computepermutation

public static void perm(char array, int start, int end) else

} }public static void exchange(char array, int start, int i)

}

排列問題(全排列的遞迴演算法問題)

題目 設計乙個遞迴演算法生成n個元素的全排列。演算法講解 設r 是要進行排列的n個元素,ri r 集合x中元素的全排列記為perm x ri perm x 表示在全排列perm x 的每乙個排列前加上字首得到的排列。r的全排列可歸納定義如下 當n 1時,perm r r 其中r是集合r中唯一的元素 ...

遞迴演算法之全排列問題

2 數字全排列 numlist.pas in out 列出所有從數字1到數字n的連續自然數的排列,要求所產生的任一數字序列中不允許出現重複的數字。輸入乙個整數n 1 n 9 輸出由1 n組成的所有不重複的數字序列,每行乙個序列,數字與數字之間用空格隔開,行首行尾不留空格。樣例輸入 numlist.i...

全排列演算法 遞迴出口問題

1.使用全域性變數傳遞返回值2.利用標準輸入輸出裝置傳遞返回值 3.在函式引數中加入乙個預設入參用於遞迴之間傳遞 1.思路 n的全排列可以看做是在n 1全排列基礎上插入第n個數defg n result ifn 1 return 0 else forxing n 1 foriinrange n x....