हमें एक पूर्णांक सरणी और एक पूर्णांक चर यानी 'X' दिया गया है। कार्य पहले दिए गए सरणी से उपसरणी बनाना है और फिर एक उपसरणी के सभी तत्वों को एक पूर्णांक X से गुणा करना है। अंत में उन तत्वों का पता लगाएं जो अधिकतम योग का योगदान देंगे।
आइए इसके लिए विभिन्न इनपुट आउटपुट परिदृश्य देखें -
में - int arr[] ={2, 4, 1, -5, -2}, X =3
बाहर - किसी भी सबअरे के सभी तत्वों को X से गुणा करने के बाद सबअरे योग को अधिकतम करें:21
स्पष्टीकरण - हमें एक्स के रूप में एक सरणी और एक पूर्णांक चर के साथ दिया जाता है। सबसे पहले, दिए गए सरणी से उपसरणी प्राप्त करें, मान लें, {2, 4, 1}। अब उपसरणी के सभी तत्वों को X यानी 3 से गुणा करें ताकि सरणी {6, 12, 3, -5, -2} हो। अंत में, अधिकतम सबएरे योग की जांच करें जो 6 + 12 + 3 =21 द्वारा लौटाया जाएगा।
में - int arr[] ={-1, 2, -6, 3, -4}, x=-1
बाहर - किसी भी सबअरे के सभी तत्वों को X से गुणा करने के बाद सबएरे योग को अधिकतम करें:11
स्पष्टीकरण - हमें एक्स के रूप में एक सरणी और एक पूर्णांक चर के साथ दिया जाता है। सबसे पहले, दिए गए सरणी से उपसरणी प्राप्त करें, मान लें, {-1, -6, -4}। अब सबअरे के सभी एलिमेंट्स को X यानी -1 से गुणा करें ताकि एरे {1, 2, 6, 3, 4} हो। अंत में, अधिकतम सबएरे योग की जांच करें जो 1 + 6 + 4 =11 द्वारा लौटाया जाएगा।
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
एक पूर्णांक सरणी और एक पूर्णांक चर को 'X' के रूप में इनपुट करें। एक सरणी के आकार की गणना करें और डेटा को फ़ंक्शन Max_Subarray(arr, size, x) में पास करें।
-
फ़ंक्शन के अंदर Max_Subarray(arr, size, x)
-
एक सरणी को int arr_2[size][3] और एक अस्थायी चर को अस्थायी रूप से 0.
के रूप में घोषित करें। -
C++ में memset() विधि का उपयोग करके -1 के साथ 'arr_2' सरणी के सभी तत्वों को प्रारंभ करता है।
-
एक सरणी के आकार तक i से 0 तक के लिए लूप प्रारंभ करें। लूप के अंदर, फ़ंक्शन को कॉल करने के लिए अस्थायी सेट करें अधिकतम (अस्थायी, चेक (i, 0, गिरफ्तारी, arr_2, आकार, x))
-
वापसी अस्थायी।
-
-
फ़ंक्शन के अंदर int check(int first, int last, int arr[], int arr_2[Max_size][3], int size, int x)
-
एक अस्थायी चर को 0 की गणना के रूप में घोषित करें।
-
पहले चेक करें IF =size फिर वापस 0
-
IF arr_2[first][last] !=-1 जांचें और फिर arr_2[first][last] लौटें।
-
IF अंतिम =0 की जाँच करें, फिर अधिकतम मान का पता लगाने के लिए C++ के इनबिल्ट अधिकतम फ़ंक्शन को कॉल करें (गिनती, गिरफ्तारी [प्रथम] + जाँच करें (प्रथम + 1, 0, गिरफ्तारी, गिरफ्तारी, आकार, x)) और गिनती भी सेट करें =अधिकतम (गिनती, x * गिरफ्तारी [प्रथम] + जांच (प्रथम + 1, 1, गिरफ्तारी, गिरफ्तारी, आकार, x))
-
ELSE यदि अंतिम =1 की जाँच करें, तो गिनती को अधिकतम पर सेट करें (गिनती, x * गिरफ्तारी [पहला] + जाँच करें (प्रथम + 1, 1, गिरफ्तारी, गिरफ्तारी, आकार, x)) और गिनती को अधिकतम पर सेट करें (गिनती, गिरफ्तारी [प्रथम] + चेक (पहले + 1, 2, एआर, एआर_2, आकार, x))
-
ELSE, गिनती को अधिकतम पर सेट करें (गिनती, गिरफ्तारी [प्रथम] + जांच (प्रथम + 1, 2, गिरफ्तारी, गिरफ्तारी, आकार, x));
-
गिनने के लिए arr_2[पहले][आखिरी] लौटें।
-
-
परिणाम प्रिंट करें।
उदाहरण
#include <bits/stdc++.h> using namespace std; #define Max_size 5 int check(int first, int last, int arr[], int arr_2[Max_size][3], int size, int x){ int count = 0; if(first == size){ return 0; } if(arr_2[first][last] != -1){ return arr_2[first][last];} if (last == 0){ count = max(count, arr[first] + check(first + 1, 0, arr, arr_2, size, x)); count = max(count, x * arr[first] + check(first + 1, 1, arr, arr_2, size, x)); } else if(last == 1){ count = max(count, x * arr[first] + check(first + 1, 1, arr, arr_2, size, x)); count = max(count, arr[first] + check(first + 1, 2, arr, arr_2, size, x)); } else{ count = max(count, arr[first] + check(first + 1, 2, arr, arr_2, size, x)); } return arr_2[first][last] = count; } int Max_Subarray(int arr[], int size, int x){ int arr_2[size][3]; int temp = 0; memset(arr_2, -1, sizeof arr_2); for(int i = 0; i < size; i++){ temp = max(temp, check(i, 0, arr, arr_2, size, x)); } return temp; } int main(){ int arr[] = {2, 4, 1, -5, -2}; int size = sizeof(arr) / sizeof(arr[0]); int x = 3; cout<<"Maximize the subarray sum after multiplying all elements of any subarray with X are: "<<Max_Subarray(arr, size, x); return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा
Maximize the subarray sum after multiplying all elements of any subarray with X are: 21