使用 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+ 浏览量

开启您的 职业生涯

通过完成课程获得认证

立即开始
广告