इस समस्या में, हमें दो ऐरे दिए गए हैं, पॉजिटिव और डिस्टिंक्ट। हमारा कार्य दो ऐरे से अधिकतम योग वाले जोड़े का योग ज्ञात करना है।
हम प्रत्येक ऐरे से एक-एक एलिमेंट लेकर अधिकतम योग वाले जोड़े को ढूंढेंगे।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
Input : arr1[] = {3, 7, 5}, arr2[] = {8, 2, 4} Output : 15व्याख्या −
Pair is (7, 8) = 7 + 8 = 15
समाधान दृष्टिकोण
समस्या को हल करने का एक सरल दृष्टिकोण लूप का उपयोग करना है। हम नेस्टेड लूप का उपयोग करेंगे और सभी जोड़ों का योग ढूंढकर अधिकतम योग वाले जोड़े को लौटाएंगे। एक कुशल दृष्टिकोण प्रत्येक ऐरे का अधिकतम एलिमेंट ढूंढना है। और फिर अधिकतम जोड़े का योग ढूंढना। यह नेस्टेड लूप के बजाय एक साधारण लूप का उपयोग करेगा।
उदाहरण
हमारे समाधान के कार्य को दर्शाने वाला प्रोग्राम
#include <iostream> using namespace std; int findMaxPairSum(int arr1[], int n1, int arr2[], int n2) { int max1 = -1; int max2 = -1; for (int i = 0; i < n1; i++) { if (arr1[i] > max1) max1 = arr1[i]; } for (int i = 0; i < n2; i++) { if (arr2[i] > max2) max2 = arr2[i]; } return (max1 + max2); } int main() { int arr1[] = { 3, 7, 5 }; int arr2[] = { 8, 2, 4 }; int n1 = sizeof(arr1) / sizeof(arr1[0]); int n2 = sizeof(arr2) / sizeof(arr2[0]); cout<<"Sum of pair from two arrays with maximum sum is "<<findMaxPairSum(arr1, n1, arr2, n2); return 0; }आउटपुट
Sum of pair from two arrays with maximum sum is 15
एक और दृष्टिकोण ऐरे को सॉर्ट करना है। और फिर दोनों ऐरे के लिए अधिकतम मान वाला एलिमेंट ढूंढना और फिर अधिकतम जोड़े का योग ढूंढना।
उदाहरण
हमारे समाधान के कार्य को दर्शाने वाला प्रोग्राम
#include <bits/stdc++.h> using namespace std; int findMaxPairSum(int arr1[], int n1, int arr2[], int n2) { sort(arr1, arr1 + n1); sort(arr2, arr2 + n2); return (arr1[n1 - 1] + arr2[n2 - 1]); } int main() { int arr1[] = { 3, 7, 5 }; int arr2[] = { 8, 2, 4 }; int n1 = sizeof(arr1) / sizeof(arr1[0]); int n2 = sizeof(arr2) / sizeof(arr2[0]); cout<<"Sum of pair from two arrays with maximum sum is "<<findMaxPairSum(arr1, n1, arr2, n2); return 0; }आउटपुट
Sum of pair from two arrays with maximum sum is 15