字串全排列演算法 遞迴

2021-10-05 17:34:52 字數 932 閱讀 8318

以字串1234為例

1 一 234

2 一 134

3 一 214

4 一 231

如何才能保證不遺漏呢

**如下:

#includeusing namespace std;

//char str = "1234";

//int size = sizeof(str) / sizeof(char);

/* str 要進行全排列的字元陣列

size 陣列的長度

form 陣列起始下標

to 陣列結束下標

*/void permutation(char *str, int size, int from, int to)

cout << endl;

return;

} //這個迴圈的作用是讓str[0] 一次和str[1] str[2] str[3]交換

for (int i = from; i <= to; i++) }

int main()

思路:第一次交換1和1的位置,把234進行遞迴呼叫,呼叫完成後恢復元素的位置保證元素的順序性

第二次交換1和2的位置,把134進行遞迴呼叫,呼叫完成後恢復元素的位置保證元素的順序性

第三次交換1和3的位置,把214進行遞迴呼叫,呼叫完成後恢復元素的位置保證元素的順序性

第四次交換1和4的位置,把231進行遞迴呼叫,呼叫完成後恢復元素的位置保證元素的順序性

其中當from==to時輸出排列的字串 並返回

執行結果

遞迴 字串全排列 全排列

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

字串的全排列 遞迴演算法

題目 給定字串s 0.n 1 設計演算法,列舉s的全排列。假設字串為 1234 首先考慮1,然後問題就變成了考慮 234 的全排列,所以問題規模縮小了1,然後再考慮2,依次類推。可以採用遞迴演算法。1 234 2 134 3 124 4 123 假設有重複字元,則重複字元的全排列就是每個字元分別與它...

字串的全排列 遞迴演算法訓練

前幾天,師兄輕描淡寫的出了一道題,對於乙個給定的字串,輸出它的全排列結果,例如,輸入ab,則程式需要輸出ab,ba 結果數為2 1 2 額外的要求是對於字串中的重複字元,程式要能識別出來並進行去重處理,例如,輸入aab,則程式需要輸出baa,aba,aab 結果數為3,而不是3 2 6 這裡我用了兩...