이 문제에서 문자열이 주어지고 문자열의 문자 사이에 공백을 넣어 이 문자열을 사용하여 만들 수 있는 모든 문자열을 인쇄해야 합니다.
주제를 더 잘 이해하기 위해 예를 들어 보겠습니다 -
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