C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

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

  1. C++で三角形の周囲を検索

    この問題では、三角形の周囲長、さまざまなタイプの三角形の周囲長の式、およびそれらを見つけるためのプログラムを確認します。 境界 フィギュアの周りの合計距離として定義されます。基本的に、それは与えられた図のすべての辺の合計です。 三角形の周囲 三角形の周囲は、その3つの辺すべての合計です(三角形は3つの辺の図です)。 式、 Perimeter = sum of all sides Perimeter = x + y + z 三角形の周囲を見つけるプログラム 例 #include <iostream> using namespace std; int calcPe

  2. C++で重複するサブツリーを検索する

    二分木があるとします。重複するすべてのサブツリーを見つける必要があります。したがって、重複するサブツリーの種類ごとに、それらのいずれかのルートノードを返す必要があります。したがって、-のようなツリーがあるとします。 重複するサブツリーは-です これを解決するには、次の手順に従います- 配列retを作成し、マップを作成しますm 再帰メソッドsolve()を定義します。これはノードを入力として受け取ります。これは次のように機能します- ノードがnullの場合、-1を返します x:=ノードの値を文字列として、「#」を連結します。 左:=ソルブ(ノードの左)、右:=ソルブ(ノード