字串的全排列

2021-06-26 21:27:52 字數 740 閱讀 4282

題目:

輸入乙個字串,列印出該字串中字元的所有排列。

例如輸入字串abc,則輸出由字元a、b、c 所能排列出來的所有字串

abc、acb、bac、bca、cab 和 cba。

思路一:遞迴求解

#include #include #include /*說明:採用遞迴求解

如求"abc",則先固定a,交換bc

求b,則交換ac,時間複雜度o(n^2)

優化了含有重複字串的問題

*/#define swap(x, y)\

/*檢查從begin到end中是否包含end字串*/

bool isreapet(char* s, int begin, int end)

}bool next_permutation(char *s, int n)

}/*如果都已經排序完成,則結束整個查詢*/

if (i < 0)

/*找到第乙個比公升序更大的數值*/

for (j=n-1; j>i; j--)

}// printf("begin %d, end %d\n", begin, end);

reverse(s, begin, end);

return true;

}/*快速排序一次後得到的索引值*/

int partition(char* s, int low, int high)

s[low] = s[high];

while (low

字串的排列 全排列

輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。輸入乙個字串,長度不超過9 可能有字元重複 字元只包括大小寫字母。使用itertools中的permutations,可以實現全排列 ...

遞迴 字串全排列 全排列

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

字串全排列

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