使用 C++ 列印從一組 n 個字元中形成的所有長度為 k 的字串


在這個問題中,我們給定一組字元和一個正整數 k,我們必須列印所有可以使用該字元集生成的長度為 k 的字串。

讓我們舉一個例子來更好地理解這個問題 -

Input: set = {‘x’, ‘y’, ‘z’} , k = 2
Output: xy, xz, yz

為了解決這個問題,我們必須找到所有可以生成的序列。對於大小為 n 的集合,長度為 k 的所有可能字串的總數將為 nk (n^k)。我們將使用遞迴呼叫來生成字串,該字串將從空字串開始,並逐個向其中新增字元。

示例

 現場演示

#include <bits/stdc++.h>
using namespace std;
void printKLengthString(char set[], string sequence, int n, int k) {
   if (k == 0){
      cout<<sequence<<"\t";
      return;
   }
   for (int i = 0; i < n; i++){
      string newSequence;
      newSequence=sequence+set[i];
      printKLengthString(set, newSequence, n, k - 1);
   }
}
int main() {
   char set[] = {'a', 'b'};
   int n = 2;
   int k = 3;
   printKLengthString(set, "", n, k);
}

輸出

aaa aab aba abb baa bab bba bbb

更新於: 2020年1月17日

2K+ 瀏覽量

開啟您的 職業生涯

透過完成課程獲得認證

立即開始
廣告