本人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...