दिए गए दो सरणियों के लिए प्रत्येक आकार N के लिए, कार्य सरणी 1 से X तत्वों और सरणी 2 से Y तत्वों को चुनकर अधिकतम योग ज्ञात करना है।
आइए अब समझते हैं कि हमें एक उदाहरण का उपयोग करके क्या करना है -
इनपुट
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 है। इन 5 तत्वों का कुल योग 22 है जो आवश्यकता के अनुसार अधिकतम है।
निम्नलिखित कार्यक्रम में उपयोग किया गया दृष्टिकोण इस प्रकार है
-
इनपुट सरणी arr1[] और arr2[] और X और Y के मान लें..
-
दो सरणियों को आरोही क्रम में क्रमबद्ध करें।
-
arr1 से अंतिम X तत्व और arr2 से Y लें क्योंकि ये उच्चतम होंगे।
-
अंत में हम चरण 3 में चयनित तत्वों का योग लौटाते हैं क्योंकि यह अधिकतम होगा।
-
नोट:सॉर्ट (गिरफ्तारी [], int) को सॉर्ट किए गए सरणी को वापस करने के लिए माना जाता है।
उदाहरण
#include <iostream>
using namespace std;
int max_sum(int arr1[],int arr2[], int length,int X,int Y){
//for sorting the array
sort(arr1,length);
sort(arr2,length);
int sum=0;
int i;
//adding last X elements from arr1 and last Y elements from arr2
for(i=0;i<X;i++){
sum+=arr1[length-i-1];
}
for(i=0;i<Y;i++){
sum+=arr2[length-i-1];
}
return(sum);
}
// Driver program
int main(){
int arr1[]={1,1,1,3,7};
int arr2[]={1,1,2,3,5};
int x=3,y=2;
printf( "Maximized sum of X+Y elements by picking X and Y elements from 1st and 2nd array is %d",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