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

以上是 C程序打印给定字符串的所有排列 的全部内容, 来源链接: utcz.com/z/335175.html

回到顶部