在这个问题上,我们得到一个字符串。我们的任务是创建一个ac程序,以打印给定字符串的所有排列。
该程序将找到给定字符串的所有可能组合并打印出来。
排列是以所有可能的排列顺序排列的对象所有部分的排列。
让我们举个例子来了解这个问题,
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