दिए गए दो सरणियों के लिए प्रत्येक आकार 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