Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 n개의 문자 집합으로 구성할 수 있는 길이가 k인 가능한 모든 문자열을 인쇄합니다.


이 문제에서 문자 집합과 양의 정수 k가 주어지고 집합의 문자를 사용하여 생성할 수 있는 길이 k의 가능한 모든 문자열을 인쇄해야 합니다.

문제를 더 잘 이해하기 위해 예를 들어 보겠습니다 -

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

이 문제를 해결하려면 생성할 수 있는 모든 가능한 시퀀스를 찾아야 합니다. 크기가 n인 집합의 경우 가능한 길이가 k인 문자열의 총 수는 n k 입니다. (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