C++での誕生日のパラドックス
誕生日のパラドックスは、確率のセクションで非常に有名な問題です。この問題の問題の説明は、
と記載されています。誕生日パーティーには何人かがいて、同じ誕生日の衝突をしている人もいます。おおよその数を見つける必要があります。同じ誕生日に基づいて誕生日パーティーに参加する人の数。
コインを持っている場合と同じように、先に進む可能性が1/2であることがわかっている確率では、10個のヘッドを獲得する可能性は1/100または0.001です。
コンセプトを理解しましょう
2人の誕生日が異なる可能性は
うるう年ではない場合は1-1/365である364/365。
したがって、特定の誕生日の確率を持つ最初の人は「1」であり、他の人にとっては異なると言えます。
P(異なる)=1×(1-1 / 365)×(1-2 / 365)×(1-3 / 365)×(1-4 / 365).......
したがって、P(同じ)=1-P(異なる)
たとえば、
確率が0.70である同じ誕生日の人の数。
N =√2×365×log(1-1 / p)。
N =√2×365×log(1-1 / 0.70)=30
したがって、合計の概算はありません。同じ誕生日の人の割合は30人です。
例
#include<bits/stdc++.h> using namespace std; int findPeople(double p){ return ceil(sqrt(2*365*log(1/(1-p)))); } int main(){ printf("%d",findPeople(0.70)); }
出力
30
-
最大ベンド数のC++パス長
二分木が与えられる問題を解決するため。次に、曲がりの数が最大のパスを見つける必要があります。つまり、パスの方向が左から右に、またはその逆に変化する場合、たとえば、曲がりが考慮されます 入力- 出力- 6 このアプローチでは、ツリーをトラバースして、以前の動きを追跡します。方向が変わった場合は、曲げカウントを更新するだけで、最大値が見つかります。 解決策を見つけるためのアプローチ このアプローチでは、すべてのパスをトラバースし、回答を更新するベンドの最大数を見つけます。 例 #include <bits/stdc++.h> using namespace std; s
-
C++でKの葉を持つ二分木のすべてのノードを印刷します
この問題では、二分木と整数Kが与えられ、子サブツリーにKの葉を持つ二分木のすべてのノードを出力する必要があります。 二分木 は、各ノードに最大2つのノード(1つまたは2つ/なし)を持つ特別なツリーです。 リーフノード 二分木のは、ツリーの最後にあるノードです。 問題を理解するために例を見てみましょう- K =2 出力- {S} この問題を解決するために、ツリーのトラバーサル(ポストオーダー)を実行します。ここで、葉の合計がKの場合、左側のサブツリーと右側のサブツリーがそれぞれ表示されます。現在のノードを出力します。 それ以外の場合は再帰的に呼び出し、サブツリーの葉がカ