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

C++での飛行機の座席割り当ての確率


n人の乗客が正確にn席の飛行機に搭乗するとします。最初の乗客がチケットを紛失し、ランダムに座席を選んだ場合。しかしその後、残りの乗客はこれらの操作に従います-

  • チケットがまだ空いている場合は、チケットに書かれている自分の席に着きます。

  • 他の席が空いている場合は、ランダムに他の席を選びます

では、n番目の人が自分の席を取得できる確率を見つける必要がありますか?したがって、入力が2の場合、出力は0.5になります。したがって、2番目の人が2番目の席を取得する確率は0.5です(最初の人が最初の席を取得したとき)。

これを解決するには、次の手順に従います-

  • nが1の場合は、1を返し、それ以外の場合は0.5

例(C ++)

理解を深めるために、次の実装を見てみましょう-

class Solution {
public:
   double nthPersonGetsNthSeat(int n) {
      if (n == 1) return 1;
      return 0.5;
   }
};

入力

2

出力

0.50000

  1. C++の配列に存在するキーKの確率

    サイズ「n」の配列で与えられ、タスクは、配列で利用可能な場合、与えられた要素kの確率を見つけることです。 配列内の要素の数に等しい「n」まで配列全体をトラバースし、指定された要素またはキー「k」を検索します。要素がその確率を計算するよりも配列に存在する場合は、0を出力します。 入力 arr[] = { 1, 2, 3, 4, 5, 6} K = 5 出力 probability of a key 5 in an array is :0.166 入力 arr[] = { 1,2,3,4,5,6,7 } K = 8 出力 probability of a key 5 in an

  2. C++のチェス盤でのナイト確率

    NxNチェス盤が1つあるとすると、騎士はr番目の行とc番目の列から開始し、正確にK回移動しようとします。ここでは、行と列に0のインデックスが付けられているため、左上の正方形は(0、0)であり、右下の正方形は(N-1、N-1)です。 騎士はセルから8つの異なるセルに移動できます。これは、この図に示されています- 騎士が移動するたびに、8つの可能な移動の1つをランダムに選択します。騎士は、正確にK移動するか、チェス盤から離れるまで移動を続けます。騎士が動きを止めた後もボードに留まる確率を見つける必要があります。 したがって、入力が3、2、0、0のような場合、出力は0.0625になります