以字串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 這裡我用了兩...