Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

सी ++ में एक्स के साथ किसी भी सबएरे के सभी तत्वों को गुणा करने के बाद सबरेरे योग को अधिकतम करें

हमें एक पूर्णांक सरणी और एक पूर्णांक चर यानी '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

  1. सी++ में एक अप्रत्यक्ष ग्राफ के सभी जुड़े घटकों में न्यूनतम तत्वों का योग

    इस समस्या में, हमें N संख्याओं का एक सरणी arr दिया जाता है जहाँ arr[i] (i+1)वें नोड का प्रतिनिधित्व करता है। इसके अलावा, किनारों के एम जोड़े हैं जहां यू और वी किनारे से जुड़े नोड का प्रतिनिधित्व करते हैं। हमारा काम एक अप्रत्यक्ष ग्राफ के सभी जुड़े घटकों में न्यूनतम तत्वों का योग खोजने के लिए एक कार्

  1. सी ++ में बार-बार घटाव के साथ सभी तत्वों को समान बनाने के बाद अधिकतम सरणी योग पाएं

    मान लीजिए कि हमारे पास n तत्वों की एक सरणी है। सभी तत्वों का अधिकतम संभव योग इस प्रकार ज्ञात कीजिए कि सभी तत्व समान हों। केवल संचालन जिसकी अनुमति है वह है किन्हीं दो तत्वों को चुनना और उनमें से बड़े को दो के पूर्ण अंतर से बदलना। मान लीजिए कि तत्व [9, 12, 3, 6] जैसे हैं। फिर आउटपुट 12 होगा। तो पहले ए

  1. सी ++ में सरणी के सभी तत्वों पर एक्सओआर ऑपरेशन लागू करके सरणी योग को कम करना

    विवरण आकार की एक सरणी को देखते हुए, एन। एक तत्व एक्स खोजें जैसे कि सरणी तत्वों का योग न्यूनतम होना चाहिए जब एक्सओआर ऑपरेशन एक्स और सरणी के प्रत्येक तत्व के साथ किया जाता है। If input array is: arr [] = {8, 5, 7, 6, 9} then minimum sum will be 30 Binary representation of array elments are: 8 : 1000