दो अलग-अलग सरणियाँ दी गई हैं और कार्य यादृच्छिक रूप से चुने गए युग्म के अधिकतम भारित युग्म होने की संभावना ढूंढना है।
एक युग्म में एक तत्व मान लें सरणी1 से और दूसरा तत्व दूसरी सरणी से मान लें सरणी2 से होगा। इसलिए प्रोग्राम को उस युग्म की संभावना ढूंढनी होगी जिसमें पहला तत्व सरणी 1 का अधिकतम तत्व होगा और दूसरा तत्व सरणी 2 का अधिकतम तत्व होगा जिससे अधिकतम भारित युग्म बनेगा।
इनपुट
arr1[] = { 2, 23 } arr2[] = { 10, 3, 8 }
आउटपुट
अधिकतम युग्म की संभावना: 0.166667
व्याख्या
दोनों सरणियों से युग्मों का समुच्चय हैं -: {(2, 10), (2, 3), (2, 8), (23, 10), (23, 3), (23, 8)}
दिए गए समुच्चय से अधिकतम भारित युग्म है: (23, 8)
संभावना है: 1 / 6 = 0.166667
इनपुट
arr1[] = { 4, 5, 6 } arr2[] = { 6, 2, 6 }
आउटपुट
अधिकतम युग्म की संभावना: 0.222222
व्याख्या
दोनों सरणियों से युग्मों का समुच्चय हैं -: {(4, 6), (4, 2), (4, 6), (5, 6), (5, 2), (5, 6), (6, 6), (6, 2), (6, 6)}
दिए गए समुच्चय से अधिकतम भारित युग्म (6, 6) है जो दो बार आ रहा है।
संभावना है: 2 / 9 = 0.2222
दृष्टिकोण
- सरणी तत्वों को इनपुट करें।
- दोनों सरणियों से अधिकतम तत्व ढूंढें और बने अधिकतम भारित युग्मों की कुल संख्या की गणना करें।
- समुच्चय में कुल युग्मों की संख्या से अधिकतम भारित युग्मों की कुल संख्या को विभाजित करके संभावना की गणना करें।
- गणना की गई संभावना प्रिंट करें।
एल्गोरिदम
शुरुआत
चरण 1 → अधिकतम भारित युग्म की गणना के लिए फ़ंक्शन घोषित करें
double max_pair(int arr1[], int arr2[], int size_1, int size_2) {
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++;
}
}
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);
}
चरण 2 → 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]);
max_pair(arr1, arr2, size_1, size_2);
रुकें
उदाहरण
#include <bits/stdc++.h>
using namespace std;
double max_pair(int arr1[], int arr2[], int size_1, int size_2) {
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++;
}
}
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 << "दोनों सरणियों में अधिकतम युग्म की संभावना है " << max_pair(arr1, arr2, size_1, size_2);
return 0;
}
आउटपुट
यदि उपरोक्त कोड चलाया जाता है तो यह निम्नलिखित आउटपुट उत्पन्न करेगा:
दोनों सरणियों में अधिकतम युग्म की संभावना है 0.166667