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

C++의 단어 목록 목록에서 구성할 수 있는 모든 문장을 재귀적으로 인쇄합니다.


단어 목록이 제공됩니다. 목표는 재귀적 접근 방식을 사용하여 목록에서 단어를 가져와서 형성할 수 있는 모든 가능한 문장을 만드는 것입니다. 두 목록에서 한 번에 한 단어만 사용할 수 있습니다.

이를 위한 다양한 입력 출력 시나리오를 살펴보겠습니다.

입력 -

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