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

更新於: 17-Jul-2020

1 千次閱讀

開啟你的事業

透過完成課程獲得認證

開始
廣告