단어 목록이 제공됩니다. 목표는 재귀적 접근 방식을 사용하여 목록에서 단어를 가져와서 형성할 수 있는 모든 가능한 문장을 만드는 것입니다. 두 목록에서 한 번에 한 단어만 사용할 수 있습니다.
이를 위한 다양한 입력 출력 시나리오를 살펴보겠습니다.
입력 -
sentence[row][col] = {{"I", "You"}, {"Do", "do not like"}, {"walking", "eating"}}
출력 -
I Do walking I Do eating I like walking I like eating You Do walking You Do eating You like walking You like eating
설명 − 문장[0-2]의 각 목록에서 하나의 단어를 취하면 위의 문장이 됩니다.
입력 -
sentence[row][col] = {{"work", "live"},{"easy", "happily"}}
출력 -
work easy work happily live easy live happily
설명 − 문장[0-1]의 각 목록에서 하나의 단어를 취하면 위의 문장이 됩니다.
-
문자열 유형의 2차원 배열을 문장[row][col]으로 선언합니다. 함수에 데이터를 Recursive_Print(sentence)로 전달합니다.
-
Recursive_Print(sentence)
로 함수 내부-
string형 배열을 arr[row]로 생성합니다.
-
i가 col보다 작을 때까지 루프 FOR를 i에서 0으로 시작합니다. 루프 내에서 IF 문장[0][i]이 비어 있지 않은지 확인한 다음 함수를 Recursion(sentence, 0, i, arr)으로 호출합니다.
-
-
함수 내부에서 Recursion(string sentence[row][col], int temp_1, int temp_2, string arr[row])
-
arr[temp_1]을 문장[temp_1][temp_2]으로 설정합니다.
-
temp_1이 행 - 1인지 확인한 다음 i가 행보다 작을 때까지 루프 FOR를 i에서 0으로 시작합니다. 루프 내부에서 arr[i]를 인쇄합니다.
-
i가 col보다 작을 때까지 루프 FOR를 i에서 0으로 시작합니다. 루프 내에서 IF 문장[temp_1+1][i]이 공백과 같지 않은지 확인한 다음 함수를 Recursion(sentence, temp_1+1, i, arr)으로 재귀 호출합니다.
-
-
결과를 인쇄하십시오.
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.
예
#include<bits/stdc++.h> #define row 3 #define col 3 using namespace std; void Recursion(string sentence[row][col], int temp_1, int temp_2, string arr[row]){ arr[temp_1] = sentence[temp_1][temp_2]; if(temp_1 == row - 1){ for(int i=0; i < row; i++){ cout << arr[i] << " "; } cout << endl; return; } for(int i=0; i < col; i++){ if(sentence[temp_1+1][i] != ""){ Recursion(sentence, temp_1+1, i, arr); } } } void Recursive_Print(string sentence[row][col]){ string arr[row]; for(int i=0; i < col; i++){ if(sentence[0][i] != ""){ Recursion(sentence, 0, i, arr); } } } int main(){ string sentence[row][col] = {{"Ajay", "sanjay"},{"Like", "is"},{"Reading", "eating"}}; Recursive_Print(sentence); return 0; }
출력
위의 코드를 실행하면 다음과 같은 출력이 생성됩니다.
Ajay Like Reading Ajay Like eating Ajay is Reading Ajay is eating sanjay Like Reading sanjay Like eating sanjay is Reading sanjay is eating