递归打印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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP