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

C++ में दिए गए सरणी k बार दोहराकर बनाई गई सरणी में अधिकतम सबअरे योग


इस समस्या में, हमें एक सरणी और एक संख्या k दी जाती है। हमारा काम एक प्रोग्राम बनाना है जो दिए गए सरणी k समय को c ++ में दोहराकर बनाई गई सरणी में अधिकतम सबएरे योग ढूंढेगा।

समस्या का विवरण - यहां, हम दिए गए एरे को k बार दोहराकर बनने वाले एरे से बनने वाले सबअरे का अधिकतम योग पाएंगे।

समस्या को समझने के लिए एक उदाहरण लेते हैं,

इनपुट - सरणी ={3, 5, 1} k =2

आउटपुट -18

स्पष्टीकरण -

array formed by repeating k times,
array = {3, 5, 1, 3, 5, 1}
Maximum subarray sum = 3+5+1+3+5+1 = 18

इस समस्या को हल करने के लिए, हम सरणी के सभी तत्वों के योग की गणना करेंगे।

फिर योग के आधार पर, हम सबअरे योग गणना की गणना करेंगे।

यदि योग> 0 है, तो हम सरणी के योग को k गुणा करेंगे, जो वास्तविक योग देता है।

यदि योग <0 है, तो हम दो सरणी दोहराव लेते हुए मैक्ससम के साथ उप-सरणी पाएंगे।

उदाहरण

हमारे समाधान के कार्यान्वयन को दिखाने के लिए कार्यक्रम,

#include<iostream>
using namespace std;
void repeatArray(int *arr, int *b, int k,int len) {
   int j = 0;
   while (k > 0){
      for (int i = 0; i < len; i++)
      b[j++] = arr[i];
      k--;
   }
}
long subArraySum(int *a,int len) {
   int max = 0;
   long newmax = 0;
   for (int i = 0; i < len; i++) {
      newmax = newmax + a[i];
   if (max < newmax)
      max = newmax;
   if (newmax < 0)
      newmax = 0;
   }
   return max;
}
long findMaxSubArraySum(int *arr, int k,int len) {
   int arraySum = 0;
   long maxSum = 0;
   int b[(2 * len)]= {0};
   repeatArray(arr, b, 2,len);
   for (int i = 0; i < len; i++)
   arraySum += arr[i];
   maxSum = subArraySum(b,2*len);
   if (arraySum > 0)
      maxSum = subArraySum(b,2*len) + (k - 2) * arraySum;
   return maxSum;
}
int main() {
   int arr[] = { 3, 5, 1};
   int length=sizeof(arr)/sizeof(arr[0]);
   int k = 3;
   cout<<"The maximum subarray sum in array formed by repeating the given array "<<k<<" times is "<<findMaxSubArraySum(arr, k,length);
   return 0;
}

आउटपुट

The maximum subarray sum in array formed by repeating the given array 3 times is 27

  1. C++ में अधिकतम K सरणी तत्वों के संकेतों को फ़्लिप करके अधिकतम सबअरे योग

    इस समस्या में, हमें एक सरणी और एक पूर्णांक k दिया जाता है। हमारा कार्य एक ऐसा प्रोग्राम बनाना है जो C++ में अधिकतम k सरणी तत्वों के चिह्नों को फ़्लिप करके अधिकतम सबअरे योग प्राप्त करेगा। कोड विवरण - यहां, हमें सरणी में फ़्लिप करने के लिए अधिक से अधिक k तत्वों को खोजना होगा जो इस सरणी से बनाए गए सबअ

  1. सी ++ में एक सरणी में अधिकतम संतुलन योग

    समस्या कथन एक सरणी को देखते हुए []। उपसर्ग योग का अधिकतम मान ज्ञात करें जो कि गिरफ्तारी में अनुक्रमणिका i के लिए प्रत्यय योग भी है []। उदाहरण यदि इनपुट ऐरे है - Arr[] ={1, 2, 3, 5, 3, 2, 1} तो आउटपुट 11 है - उपसर्ग योग =गिरफ्तारी[0..3] =1 + 2 + 3 + 5 =11 और प्रत्यय योग =गिरफ्तारी[3..6] =5 + 3 +

  1. C++ में दिए गए ऑब्जेक्ट्स की सरणी से अधिकतम ऊंचाई पिरामिड खोजें

    मान लीजिए कि हमारे पास n वस्तुओं की एक सरणी है। प्रत्येक वस्तु की चौड़ाई W [i] होती है। हमें उन्हें पिरामिड के रूप में व्यवस्थित करना होगा जैसे - ith की कुल चौड़ाई (i + 1)वें से कम है ith में वस्तुओं की कुल संख्या (i + 1)वें से कम है उदाहरण के लिए, यदि वज़न [40, 100, 20, 30] जैसा है, तो आउट