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

C++ प्रोग्राम में n सरणियों से बढ़ते क्रम तत्वों का अधिकतम योग

इस समस्या में, हमें nXm आकार का 2-D मैट्रिक्स दिया गया है। हमारा काम n सरणियों से बढ़ते क्रम तत्वों का अधिकतम योग खोजने के लिए एक प्रोग्राम बनाना है।

कार्यक्रम विवरण - यहां, हमें प्रत्येक पंक्ति से एक तत्व को इस तरह से लेकर तत्वों का अधिकतम योग ज्ञात करने की आवश्यकता है कि ith पंक्ति का तत्व (i+1)वें पंक्ति के तत्व से कम हो। और इसी तरह। यदि ऐसी कोई राशि संभव नहीं है, तो −1 लौटाएं, जिसका अर्थ है कि कोई परिणाम संभव नहीं है।

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

इनपुट

mat[][] = {
   {4, 5, 1, 3, 6},
   {5, 9, 2, 7, 12},
   {13, 1, 3, 6, 8},
   {10, 5, 7, 2, 4}
}

आउटपुट

31

स्पष्टीकरण

Taking elements from the matrix to create max Sum:
6 + 7 + 8 + 10 = 31,
6 From array 1, the maximum value.
7 from array 2, choosing 12(maximum value) cannot provide a solution.
8 from array 3, choosing 13(maximum value) cannot provide a solution.
10 From array 4, the maximum value

समाधान दृष्टिकोण

समस्या का एक समाधान यह है कि सरणियों के अंतिम सरणी से एक तत्व का चयन किया जाए और फिर दिए गए तत्व से छोटे संभावित सबसे बड़े संभावित तत्व का चयन किया जाए।

अब, इस समाधान का उपयोग करते हुए, हमारे पास एक मामला है जब इथारे (पंक्ति) में कोई तत्व नहीं है जो (i+1)वें सरणी (पंक्ति) के तत्व से कम है। यहां, हम −1 लौटेंगे।

सरणी को छाँटना हमारे समाधान की दक्षता के लिए एक अच्छी सहायता हो सकती है। जैसे कि हम बढ़ते क्रम में क्रमबद्ध करते हैं, सबसे बड़ा तत्व सूचकांक m-1 पर होगा, और अगला छोटा होगा। इसलिए, शर्त को संतुष्ट करने वाले सबसे बड़े तत्व को खोजना आसान है।

एल्गोरिदम

इनिशियलाइज़ मैक्ससम =0, currMax

चरण 1 -

Sort each array of the array of arrays (each will have elements in
increasing order).

चरण 2 -

currMax = mat[n−1][m−1], the last element or the last row. Update
maxSum, maxSum = currMax.

चरण 3 -

मैट्रिक्स पंक्ति के माध्यम से लूप, i =n−2 से 0.

चरण 3.1 -

Find the max element in mat[i][] which is smaller than
currMax at index j.

चरण 3.2 -

if j < 0, i.e. no value found. Return −1.

चरण 3.3 -

Update currMax. currMax = mat[i][j].

चरण 3.4 -

Update maxSum, maxSum = currMax.

चरण 4 -

Return maxSum.

उदाहरण

हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम,

#include <bits/stdc++.h>
#define M 5
using namespace std;
int calcMaxSumMat(int mat[][M], int n) {
   for (int i = 0; i < n; i++)
   sort(mat[i], mat[i] + M);
   int maxSum = mat[n − 1][M − 1];
   int currMax = mat[n − 1][M − 1];
   int j;
   for (int i = n − 2; i >= 0; i−−) {
      for (j = M − 1; j >= 0; j−−) {
         if (mat[i][j] < currMax) {
            currMax = mat[i][j];
            maxSum += currMax;
            break;
         }
      }
      if (j == −1)
      return 0;
   }
   return maxSum;
}
int main() {
   int mat[][M] = {
      {4, 5, 1, 3, 6},
      {5, 9, 2, 7, 12},
      {12, 1, 3, 6, 8},
      {10, 5, 7, 2, 4}
   };
   int n = sizeof(mat) / sizeof(mat[0]);
   cout<<"The maximum sum of increasing order elements from n arrays is "<<calcMaxSumMat(mat, n);
   return 0;
}

आउटपुट

The maximum sum of increasing order elements from n arrays is 31

  1. तीन सरणियों से अधिकतम योग जैसे कि समान से लगातार तत्वों को चुनना C++ में अनुमति नहीं है

    इस समस्या में, हमें तीन सरणियाँ दी गई हैं arr1[], arr2[], और arr3[] सभी आकार N. हमारा काम तीन सरणियों से अधिकतम योग खोजने के लिए एक प्रोग्राम बनाना है जैसे कि तत्वों को लगातार चुनना नहीं है C++ में अनुमति है। समस्या का विवरण हम N तत्वों को चुनकर अधिकतम योग प्राप्त करेंगे। i=वें तत्व को सरणी के i-वे

  1. C++ में क्रम को समान रखते हुए दो दिए गए सरणियों से अधिकतम सरणी

    समस्या कथन दो समान आकार की सरणियाँ A [] और B [] दी गई हैं। कार्य समान आकार की तीसरी सरणी बनाना है। परिणाम सरणी में दोनों सरणी से अधिकतम n तत्व होने चाहिए। इसमें पहले ए [] के तत्वों को चुना जाना चाहिए, फिर बी [] के चुने हुए तत्वों को उसी क्रम में चुना जाना चाहिए जैसे वे मूल सरणी में दिखाई देते हैं।

  1. बढ़ते क्रम में अंकों के साथ सूची से तत्वों को निकालने के लिए पायथन प्रोग्राम

    जब किसी सूची से तत्वों को बढ़ते क्रम में निकालने की आवश्यकता होती है, तो एक साधारण पुनरावृत्ति, एक ध्वज मान और str विधि का उपयोग किया जाता है। नीचे उसी का एक प्रदर्शन है - उदाहरण my_list = [4578, 7327, 113, 3467, 1858] print("The list is :") print(my_list) my_result = [] for element in