दिए गए दो ऐरे प्रत्येक आकार N के, कार्य X एलिमेंट्स को ऐरे 1 से और Y एलिमेंट्स को ऐरे 2 से चुनकर अधिकतम योग ढूंढना है।
आइए अब एक उदाहरण का उपयोग करके समझते हैं कि हमें क्या करना है:
इनपुट
arr1 = {1,2,3,4,5}; X=2
arr2 = {1,3,5,2,7}; Y=3
आउटपुट
Maximum sum here is: 24
व्याख्या - हम arr1 से 2 नंबर और arr2 से 3 चुन रहे हैं। arr1 के सबसे बड़े 2 हैं 4,5 और arr2 के सबसे बड़े 3 हैं 3,5,7। इन 5 एलिमेंट्स का कुल योग 24 है जो आवश्यकता के अनुसार अधिकतम है।
इनपुट
arr1 = {10,13,16,14}; X=1
arr2 = {4,1,2,1}; Y=2
आउटपुट
Maximum sum here is: 22
व्याख्या - हम arr1 से 1 नंबर और arr2 से 2 चुन रहे हैं। arr1 का सबसे बड़ा 16 है और arr2 के सबसे बड़े 2 हैं 4,2। इन 3 एलिमेंट्स का कुल योग 22 है जो आवश्यकता के अनुसार अधिकतम है।
नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण
- इनपुट ऐरे arr1[] और arr2[] और X और Y के मान लें।
- दोनों ऐरे को आरोही क्रम में सॉर्ट करें।
- arr1 से अंतिम X एलिमेंट्स और arr2 से अंतिम Y एलिमेंट्स लें क्योंकि ये सबसे बड़े होंगे।
- अंत में चरण 3 में चुने गए एलिमेंट्स का योग रिटर्न करें क्योंकि यह अधिकतम होगा।
- नोट: sort(arr[], int) माना जाता है कि सॉर्ट किया गया ऐरे रिटर्न करता है।
उदाहरण
#include <iostream>
#include <algorithm>
using namespace std;
int max_sum(int arr1[], int arr2[], int length, int X, int Y) {
// ऐरे को सॉर्ट करने के लिए
sort(arr1, arr1 + length);
sort(arr2, arr2 + length);
int sum = 0;
int i;
// arr1 से अंतिम X एलिमेंट्स और arr2 से अंतिम Y एलिमेंट्स जोड़ना
for (i = 0; i < X; i++) {
sum += arr1[length - i - 1];
}
for (i = 0; i < Y; i++) {
sum += arr2[length - i - 1];
}
return sum;
}
// ड्राइवर प्रोग्राम
int main() {
int arr1[] = {1, 1, 1, 3, 7};
int arr2[] = {1, 1, 2, 3, 5};
int x = 3, y = 2;
cout << "Maximized sum of X+Y elements by picking X and Y elements from 1st and 2nd array is " << max_sum(arr1, arr2, 5, x, y);
return 0;
}
आउटपुट
Maximized sum of X+Y elements by picking X and Y elements from 1st and 2nd array is 19