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]の各リストから1つの単語を取得すると、上記の文が得られます。
入力 −
sentence[row][col] = {{"work", "live"},{"easy", "happily"}}
出力 −
work easy work happily live easy live happily
説明 −文[0-1]の各リストから1つの単語を取得すると、上記の文が得られます。
-
文字列型の2次元配列をsentence[row][col]として宣言します。データをRecursive_Print(sentence)として関数に渡します。
-
Recursive_Print(sentence)としての関数内
-
文字列型の配列をarr[row]として作成します。
-
iがcol未満になるまで、ループFORをiから0まで開始します。ループ内で、IFセンテンス[0] [i]が空でないことを確認してから、Recursion(sentence、0、i、arr)として関数を呼び出します。
-
-
関数内でRecursion(string statement [row] [col]、int temp_1、int temp_2、string arr [row])
-
arr[temp_1]をsentence[temp_1][temp_2]に設定します。
-
temp_1が行-1であるかどうかを確認してから、iが行より小さくなるまでiから0までループFORを開始します。ループ内で、arr[i]を出力します。
-
iがcol未満になるまで、ループFORをiから0まで開始します。ループ内で、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
-
C++でリーフノードから距離kにあるすべてのノードを出力します
この問題では、二分木と数Kが与えられます。葉のノードからkの距離にある木のすべてのノードを印刷する必要があります。 二分木 は、各ノードに最大2つのノード(1/2 /なし)がある特別なツリーです。 リーフノード 二分木のは、ツリーの最後にあるノードです。 この問題では、リーフノードからの距離はリーフノードよりも高いレベルのノードです。レベル4のリーフノードから距離2のノードがレベル2になるとします。 問題を理解するために例を見てみましょう K =2 出力 − 6 9. この問題を解決するために、ツリーをトラバースします。すべては、リーフノードに到達するレベルごとにすべて
-
特定のソースから宛先までのすべてのパスをC++で出力します
この問題では、有向グラフが与えられ、グラフのソースから宛先までのすべてのパスを印刷する必要があります。 有向グラフ は、頂点aからbに向けられたエッジを持つグラフです。 問題を理解するために例を見てみましょう ソース=K宛先=P 出力: K -> T -> Y -> A -> P K -> T -> Y -> P K -> A -> P ここで、KからPへのパスを見つけました。パスをトラバースし、KからPに向かうすべてのパスを出力しました。 この問題を解決するために、深さ優先探索を使用してグラフをトラバースします。