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


在这个问题中,给定一个字符串。我们的任务是编写一个 c 程序来打印给定字符串的所有排列。

此程序将找到给定字符串的所有可能的组合并打印它们。

排列是指对象所有部分的所有部分按照所有可能的排列顺序进行排列。

让我们举一个例子来理解这个问题,

输入

xyz

输出

xyz, xzy, yxz, yzx, zxy, zyx

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

说明

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

更新于: 17-Jul-2020

1 千次阅读

开启你的事业

通过完成课程获得认证

开始
广告