遞迴法 元素全排列問題

2022-08-20 02:42:12 字數 1048 閱讀 2922

問題描述:設r=時要進行排列的n個元素(不考慮相等情況),寫出乙個演算法,列出r的所有不同排列。

演算法設計:給定n及待排列的n個元素。計算出這n個元素的所有不同排列。

演算法思路:設r=是要進行排列的n個元素,r i = r - 。集合x中元素的全排列標記為perem(x)。(r i)perem(x)表示在全排列perem(x)的每乙個排列前加上字首 r i 得到的排列。r的全排列可歸納定義如下:

通俗解釋:用自己的話說就是,元素的全排列相當於 集合中每乙個元素居首位且其餘元素全排列 的和。而其中元素的全排列 又可以理解為其餘元素這個集合中 每乙個元素居首位且其餘元素全排列 的和這種情況,即是更小乙個規模的全排列。而當其餘元素只有乙個時,排列唯一,逆向退回去,排列順序也就都有了。

1

package

com.school.blog;23

/**4

* 全排列問題,寫出乙個集合中元素的所有排列情況5*

@author

aganrun6*/

7public

class

wholesort ; //

舉此情況為例,使用者也可以自行輸入

14 perm(a, 0, a.length - 1);

15 system.out.println("共有" + sum + "種全排列");16}

1718

//全排列函式,將list字元陣列中從k到m進行全排列

19public

static

void perm(char list, int k, int

m) 25 sum++;

26system.out.println();

27 }else33}

34}3536

//將list陣列中的元素list[k]和list[i]交換位置

37public

static

void swap(char list, int k, int

i)42

43 }

遞迴 遞迴法解決排列問題

方法1 程式大致結構 約定 pl len pl 為最終放置結果的陣列 len為陣列的長度 ele為參與排列的個元素出現的個數 i為pl中下標 假設參與排列的元素有abcd run ele,int i 注意 在遞迴塊內,不應對所傳入的引數進行改變 每個遞迴塊所得到的原始引數應保持一致。舉例 abcde...

java 實現的用遞迴法實現全排列問題

演算法設計與分析 王曉東 感謝老師 perm list,k,m 1.當 k m,即元素已經全排列,那麼輸出列印即可。2當 k 1 m 那麼此時只有兩個元素,輸出兩種排列情況 原數列,交換後的數列。3.當 k 2 m,那麼此時有三個元素。設順序確定為x1 x2 x3.1 x1不變,對剩下的兩個元素全排...

全排列問題(遞迴)

上次上課老師講了全排列演算法,現在剛剛看自己的寫的全排列演算法,看了好一會才看懂。應該是自己理解的不夠徹底 所以今天徹徹底底的來分析一下 先看圖 思路 先固定乙個字元,然後將固定的字元與它後面的每乙個進行交換,一直遞迴下去,直到固定的字元後面只有乙個字元 我們先看看圖,框外面的字元是被固定的字元,框...