全排列問題 插空法(遞迴形式)

2022-08-31 10:36:11 字數 905 閱讀 6289

本人qq :1770115451             演算法***: 1061907071

請編寫乙個方法,確定某字串所有的排列組合,給定乙個字串,請返回該字串的所有排列

例如: 「abc」  的全排列結果為:abc 、acb、bac、bca、cab、cba

(題意:就是乙個字串的每乙個字元重新排列出的所有的結果)原理:

從最底層進行遞迴,自底向上的進行插空。(不太清楚的朋友可以考慮看一下迭代的形式,因為遞迴的思維本來就不符合常人邏輯...)

實現步驟:

第一步:建立乙個用來裝返回結果的字串集合
第二步:遞迴的出口,也就是當n=1的時候,說明遞迴結束,則新增第乙個字元,並返回結果
第三步:如果遞迴沒有結束,則繼續自底向上進行遞迴
第四步:返回結果
具體**:

//

遞迴形式**

public

static arraylistpermutation(string str,int

n)

//第三步:如果遞迴沒有結束,則繼續自底向上進行遞迴

//1.獲取上一層的遞迴集合

arraylista_n_1= permutation(str, n-1) ;

//2.對上一層的集合進行插空

char ch= str.charat(n-1); //

獲取當前字元

for(string e:a_n_1)

}//第四步:返回結果

return

a_n;

}

全排列問題(遞迴)

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

遞迴求解全排列問題

遞迴求解全排列問題 求解思想 排列中每乙個數字,都有一次當最前單一綴的機會,例如 排列陣列 a 1.當a中只有1個數字的時候,a 1 則只有1個數字做單一字首和字尾,則只有一種 1!1 可能 a1,直接輸出 2.當a中只有2個數字的時候,a 2 則a1,a2分別有一次機會做單一字首的機會,2!2 3...

全排列問題(遞迴呼叫)

題目如下 給乙個數字n,求1到n之間的數字的全排列。input 多組輸入,以eof結束 1 n 8 output 對於每個n,輸出1到n的全排列 按字典序輸出全排列 每個排列一行 相鄰兩個數字之間隔乙個空格 sample input sample output 1 2 3 1 3 2 2 1 3 2...