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

ランダムペアがC++の最大加重ペアである確率


2つの異なる配列が与えられ、タスクは、選択されたランダムペアが最大加重ペアになる確率を見つけることです。

ペアには、たとえばarray1の1つの要素が含まれ、別の要素が別の配列、たとえばarray2を形成します。したがって、プログラムは、最初の要素が配列1の最大要素であり、2番目の要素が配列2の最大要素であるペアの確率を見つけて、最大加重ペアを形成する必要があります。

入力

arr1[] = { 2, 23 }
arr2[] = { 10, 3, 8 }

出力

probability of maximum pair : 0.166667

説明

set of pairs from both the arrays are -: {(2, 10), (2, 3), (2, 8), (23, 10), (23, 3), (23, 8)}
Maximum weighted pair from the given set is: (23, 8)
Probability is : 1 / 6 = 0.166667

入力

arr1[] = { 4, 5, 6 }
arr2[] = { 6, 2, 6 }

出力

probability of maximum pair : 0.222222

説明

set of pairs from both the arrays are -: {(4, 6), (4, 2), (4, 6), (5, 6), (5, 2), (5, 6), (6, 6), (6, 2), (6, 6)}
Maximum weighted pair from the given set is (6, 6) which is occurring twice.
Probability is : 2 / 9 = 0.2222

アプローチ

  • 配列要素を入力します

  • 両方の配列から最大要素を見つけ、そのように形成された最大加重ペアの総数を計算します

  • 最大加重ペアの総数をセット内のペアの総数で割って確率を計算します

  • 計算された確率を印刷する

アルゴリズム

Start
Step1→ declare function to calculate maximum weighted pair
   double max_pair(int arr1[], int arr2[], int size_1, int size_2)
      declare int max_pair1 = INT_MIN, count_1 = 0
      Loop For int i = 0 and i < size_1 and i++
      IF arr1[i] > max_pair1
         Set max_pair1 = arr1[i]
         Set count_1 = 1
      End
      Else IF arr1[i] = max_pair1
         Set count_1++
      End
   End
   Declare int max_pair2 = INT_MIN, count_2 = 0
   Loop For int i = 0 and i < size_2 and i++
      IF arr2[i] > max_pair2
         Set max_pair2 = arr2[i]
         Set count_2 = 1
      End
      Else IFarr2[i] = max_pair2
         Set count_2++
      End
   End
   return (double)(count_1 * count_2) / (size_1 * size_2)
Step 2→ In main()
   Declare int arr1[] = { 2, 23 }
   Declare int arr2[] = { 10, 3, 8 }
   Calculate int size_1 = sizeof(arr1) / sizeof(arr1[0])
   Calculate int size_2 = sizeof(arr2) / sizeof(arr2[0])
   Call max_pair(arr1, arr2, size_1, size_2)
Stop

#include <bits/stdc++.h>
using namespace std;
// Function to return probability
double max_pair(int arr1[], int arr2[], int size_1, int size_2){
   //pair from array 1
   int max_pair1 = INT_MIN, count_1 = 0;
   for (int i = 0; i < size_1; i++){
      if (arr1[i] > max_pair1){
         max_pair1 = arr1[i];
         count_1 = 1;
      }
      else if (arr1[i] == max_pair1){
         count_1++;
      }
   }
   //pair from array 2
   int max_pair2 = INT_MIN, count_2 = 0;
   for (int i = 0; i < size_2; i++){
      if (arr2[i] > max_pair2){
         max_pair2 = arr2[i];
         count_2 = 1;
      }
      else if (arr2[i] == max_pair2){
         count_2++;
      }
   }
   return (double)(count_1 * count_2) / (size_1 * size_2);
}
int main(){
   int arr1[] = { 2, 23 };
   int arr2[] = { 10, 3, 8 };
   int size_1 = sizeof(arr1) / sizeof(arr1[0]);
   int size_2 = sizeof(arr2) / sizeof(arr2[0]);
   cout <<"probability of maximum pair in both the arrays are "<<max_pair(arr1, arr2, size_1, size_2);
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます-

probability of maximum pair in both the arrays are 0.166667

  1. C++のMazeIII

    空のスペースと壁のある迷路があり、その迷路の中にボールもあるとします。ボールは、上(u)、下(d)、左(l)、または右(r)の方向に転がることで空きスペースを通過できますが、壁にぶつかるまで転がり続けます。ボールが止まると、次の方向を選ぶことができます。その迷路にも1つの穴があります。ボールが穴に転がると、ボールは穴に落ちます。 したがって、ボールの位置、穴の位置、迷路がある場合、最短距離を移動することでボールがどのように穴に落ちるかを調べる必要があります。ここで、距離は、ボールがスタート(除外)からホール(含まれる)まで移動した空きスペースの数によって定義されます。 「u」、「d」、「l

  2. グラフの最大カットを見つけるためのC++プログラム

    このプログラムでは、グラフの最大カットを見つけるために、グラフのエッジ連結性を見つける必要があります。グラフのグラフのエッジ接続は、それがブリッジであることを意味し、グラフを削除すると切断されます。接続されたコンポーネントの数は、切断された無向グラフのブリッジを削除すると増加します。 関数と擬似コード Begin    Function connections() is a recursive function to find out the connections:    A) Mark the current node un visited. &nb