字串全排列

2021-08-08 04:26:08 字數 679 閱讀 8630

求乙個串的全排列,可以分別用每個字元作為第乙個字元,然後求剩餘串的全排列與第乙個字元分別組合。「求剩餘串的全排列」不正是原問題的同類子問題嗎,所以可使用遞迴演算法:

fun() 

}

然後下乙個字元也呼叫fun()

fun(字元索引作為引數 int j) 

}

那麼遞迴結束的條件呢,當然是處理完所有字元時,列印處理好的字元

fun(字元索引作為引數 int j) 

if(j == str.length) syso(str);

}

函式的引數還要加上字串本身,而且用字元陣列比較方便。

加上非法輸入判斷,完整的**:

public static void pernutate(char charr, int i) 

} public static void swap(char s, int i, int j)

public static void main(string args) ;

solution2.pernutate(charr, 0);

}

參考:

遞迴 字串全排列 全排列

在高中階段我們已經通過大量的習題了解了排列和組合。但是有時候我們研究的不是由排列和組合算出來的數字,研究的是生成排列和組合。即,把集合中元素所有的排列和組合全部列出來,然後研究這些序列的性質。今天我用兩種方法講一下如何生成排列。注意我們這裡涉及的順序都是序列的字典序。序列的字典序 設有兩個序列,第乙...

字串全排列

依次選出每乙個字元元素,作為排列的第乙個元素,然後對剩餘的元素進行全排列,如此遞迴處理,從而得到所有元素的全排列。以對字串abc進行全排列為例,我們可以這麼做 固定a,求後面bc的排列 abc,acb,求好後,a和b交換,得到bac 固定b,求後面ac的排列 bac,bca,求好後,c放到第一位置,...

字串全排列

如果沒有重複字元 include using namespace std void swap char char void permutation char char int main void swap char a,char b str 整個串 pbegin 後面的字串拉到前面的起始位置 voi...