递归打印可以从 C++ 中的单词列表列表形成的所有句子
给出一个单词列表。目标是创建所有可能的句子,这些句子可以通过使用递归方法从列表中取出单词来形成。您一次只能从两个列表中选取一个词。
让我们看看这个的各种输入输出场景
输入 -
sentence[row][col] = {{"I", "You"},{"Do", "do not like"},
{"walking", "eating"}}
输出 -
I Do walkingI 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 easywork 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(string sentence[row][col], int temp_1, int temp_2, string arr[row])
将 arr[temp_1] 设置为句子 [temp_1][temp_2]。
检查 IF temp_1 is row - 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 ReadingAjay Like eating
Ajay is Reading
Ajay is eating
sanjay Like Reading
sanjay Like eating
sanjay is Reading
sanjay is eating
以上是 递归打印可以从 C++ 中的单词列表列表形成的所有句子 的全部内容, 来源链接: utcz.com/z/345693.html