C++ 中隨機配對為最大權重配對的機率
給定兩個不同的陣列,任務是找到隨機選擇的配對為最大權重配對的機率。
一個配對將包含一個來自例如陣列1的元素和另一個來自另一個數組例如陣列2的元素。因此,程式必須找到包含第一個元素為陣列1的最大元素和第二個元素為陣列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
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP