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

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


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

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

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

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

आउटपुट - 18

व्याख्या -

k बार दोहराकर बनी सरणी = {3, 5, 1, 3, 5, 1} अधिकतम सबएरे सम = 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. - C++ में ऐरे में अधिकतम संतुलन योग

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

  1. - C++ में दिए गए वस्तुओं की सरणी से अधिकतम ऊंचाई का पिरामिड ज्ञात करें

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