首页 文章资讯内容详情

递归打印可以从 C++ 中的单词列表列表形成的所有句子

2026-06-02 2 花语

给出一个单词列表。目标是创建所有可能的句子,这些句子可以通过使用递归方法从列表中取出单词来形成。您一次只能从两个列表中选取一个词。

让我们看看这个的各种输入输出场景

输入 -

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