C程序打印给定字符串的所有排列

在这个问题上,我们得到一个字符串。我们的任务是创建一个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