이 문제에서 문자열이 주어지고 문자열의 문자 사이에 공백을 넣어 이 문자열을 사용하여 만들 수 있는 모든 문자열을 인쇄해야 합니다.
주제를 더 잘 이해하기 위해 예를 들어 보겠습니다 -
Input: string = ‘XYZ’ Output: XYZ, XY Z, X YZ, X Y Z
이 문제를 해결하려면 문자열에 공백을 넣을 수 있는 모든 가능한 방법을 찾아야 합니다. 이를 위해 우리는 재귀를 사용할 것입니다. 여기에서 공백을 하나씩 배치하고 새 문자열을 생성합니다.
예시
#include <iostream>
#include <cstring>
using namespace std;
void printPattern(char str[], char buff[], int i, int j, int n){
if (i==n){
buff[j] = '\0';
cout << buff << endl;
return;
}
buff[j] = str[i];
printPattern(str, buff, i+1, j+1, n);
buff[j] = ' ';
buff[j+1] = str[i];
printPattern(str, buff, i+1, j+2, n);
}
int main() {
char *str = "XYZ";
int n = strlen(str);
char buf[2*n];
buf[0] = str[0];
cout<<"The string generated using space are :\n";
printPattern(str, buf, 1, 1, n);
return 0;
} 출력
공백을 사용하여 생성된 문자열은 -
XYZ XY Z X YZ X Y Z