递归打印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

说明 − 从sentence[0-2]中的每个列表中取一个词得到上面的句子。

输入 

sentence[row][col] = {{"work", "live"},{"easy", "happily"}}

输出 

work easy
work happily
live easy
live happily

说明 − 从sentence[0-1]中的每个列表中取一个词得到上面的句子。

  • 声明一个二维字符串数组sentence[row][col]。将数据作为Recursive_Print(sentence)传递给函数。

  • 在函数Recursive_Print(sentence)内部

    • 创建一个字符串类型的数组arr[row]。

    • 从i=0开始循环,直到i小于col。在循环内,检查IF sentence[0][i]不为空,则调用函数Recursion(sentence, 0, i, arr)。

  • 在函数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,则从i=0开始循环,直到i小于row。在循环内,打印arr[i]。

    • 从i=0开始循环,直到i小于col。在循环内,检查IF sentence[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

更新于: 2021年11月3日

432 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.