C 程式設計:列印給定字串的所有排列
在這個問題中,給定一個字串。我們的任務是編寫一個 c 程式來列印給定字串的所有排列。
此程式將找到給定字串的所有可能的組合並列印它們。
排列是指物件所有部分的所有部分按照所有可能的排列順序進行排列。
讓我們舉一個例子來理解這個問題,
輸入
xyz
輸出
xyz, xzy, yxz, yzx, zxy, zyx
說明
These are all permutations take in order.
為了解決這個問題,我們將使用回溯,即,將字串的每個字元作為排列的第一個字元,然後按照順序逐個選擇字串的所有剩餘字元。因此,列印字串的所有排列。
列印給定字串的所有排列的程式
//列印給定字串的所有排列的程式 −
示例
#include <iostream> using namespace std; void findPermutations(string str, int l, int r){ if (l == r) cout<<str<<" "; else{ for (int i = l; i <= r; i++){ swap(str[l], str[i]); findPermutations(str, l+1, r); swap(str[l], str[i]); } } } int main(){ string str = "WXYZ"; int n = str.size(); findPermutations(str, 0, n-1); return 0; }
輸出
WXYZ WXZY WYXZ WYZX WZYX WZXY XWYZ XWZY XYWZ XYZW XZYW XZWY YXWZ YXZW YWXZ YWZX YZWX YZXW ZXYW ZXWY ZYXW ZYWX ZWYX ZWXY
廣告