递归打印可以从 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]中的每个列表中取出一个词给出上述句子。
将字符串类型的二维数组声明为sentence[row][col]。将数据作为传递给函数Recursive_Print(sentence)。
在函数内部为Recursive_Print(sentence)
创建一个字符串类型的数组作为arr[row]。
从i到0开始循环FOR,直到i小于col。在循环内,检查IF语句[0][i]不为空,然后调用函数作为Recursion(sentence,0,i,arr)。
在函数内部作为Recursion(stringsentence[row][col],inttemp_1,inttemp_2,stringarr[row])
将arr[temp_1]设置为句子[temp_1][temp_2]。
检查IFtemp_1isrow-1然后开始循环FOR从i到0直到i小于行。在循环内,打印arr[i]。
从i到0开始循环FOR,直到i小于col。在循环内,检查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