字串全排列 permutation

2022-08-16 18:30:15 字數 927 閱讀 8834

問題:給定字串s,生成該字串的全排列。

方法1:依次從字串中取出乙個字元作為最終排列的第乙個字元,對剩餘字元組成的字串生成全排列,最終結果為取出的字元和剩餘子串全排列的組合。

#include #include using namespace std;

void permute1(string prefix, string str)

}void permute1(string s)

int main()

優點:該方法易於理解,但無法移除重複的排列,如:s="aba",會生成兩個「aab」。

方法2:利用交換的思想,具體見例項,但該方法不如方法1容易理解。

兩種方法的生成結果:

method1

abaaab

baabaa

aababa

method2

abaaab

baa請按任意鍵繼續. . .

遞迴 字串全排列 全排列

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

字串全排列

依次選出每乙個字元元素,作為排列的第乙個元素,然後對剩餘的元素進行全排列,如此遞迴處理,從而得到所有元素的全排列。以對字串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...