C++の特別な家族で職業を探す
医師やエンジニアの特別な家族がいると考えてください。いくつかのルールがあります、これらは以下のようなものです-
- 誰にも2人の子供がいます
- エンジニアの最初の子供はエンジニア、2番目の子供は医者です
- 医師の最初の子供は医師であり、2番目の子供はエンジニアです
- すべての世代の医師とエンジニアはエンジニアから始まります
したがって、レベル4と位置2の結果を取得したい場合、結果はDoctor
になります。アイデアは単純です。人の職業は次の2つに依存します。
- 親の職業。
- ノードの位置:ノードの位置が奇数の場合、その職業はその親と同じです。そうでなければ、職業はその親とは異なります。
親の職業を再帰的に見つけてから、上記のポイント2を使用して現在のノードの職業を見つけます。
例
#include<iostream> using namespace std; char getProfession(int level, int pos) { if (level == 1) return 'E'; if (getProfession(level-1, (pos+1)/2) == 'D') return (pos%2)? 'D' : 'E'; return (pos%2)? 'E' : 'D'; } int main(void) { int level = 4, pos = 2; cout << "The profession is: "; if(getProfession(level, pos) == 'E'){ cout << "Engineer"; } else { cout << "Doctor" ; } }
出力
The profession is: Doctor
-
C++で三角形の周囲を検索
この問題では、三角形の周囲長、さまざまなタイプの三角形の周囲長の式、およびそれらを見つけるためのプログラムを確認します。 境界 フィギュアの周りの合計距離として定義されます。基本的に、それは与えられた図のすべての辺の合計です。 三角形の周囲 三角形の周囲は、その3つの辺すべての合計です(三角形は3つの辺の図です)。 式、 Perimeter = sum of all sides Perimeter = x + y + z 三角形の周囲を見つけるプログラム 例 #include <iostream> using namespace std; int calcPe
-
C++で重複するサブツリーを検索する
二分木があるとします。重複するすべてのサブツリーを見つける必要があります。したがって、重複するサブツリーの種類ごとに、それらのいずれかのルートノードを返す必要があります。したがって、-のようなツリーがあるとします。 重複するサブツリーは-です これを解決するには、次の手順に従います- 配列retを作成し、マップを作成しますm 再帰メソッドsolve()を定義します。これはノードを入力として受け取ります。これは次のように機能します- ノードがnullの場合、-1を返します x:=ノードの値を文字列として、「#」を連結します。 左:=ソルブ(ノードの左)、右:=ソルブ(ノード