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