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:=ノードの値を文字列として、「#」を連結します。 左:=ソルブ(ノードの左)、右:=ソルブ(ノード