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

C++ का उपयोग करके मैट्रिक्स में अधिकतम योग के साथ जोड़ी खोजें

इस लेख में, हम किसी दिए गए मैट्रिक्स या 2-डी सरणी में अधिकतम योग के साथ एक जोड़ी खोजने पर चर्चा करेंगे। उदाहरण के लिए

Input : matrix[m][n] = {
   { 3, 5, 2 },
   { 2, 6, 47 },
   { 1, 64, 66 } }

Output : 130
Explanation : maximum sum is 130 from element pair 64 and 66.

Input : matrix[m][n] = {
   { 55, 22, 46 },
   { 6, 2, 1 },
   { 3, 24, 52 } }
Output : 107
Explanation : maximum sum is 130 from element pair 55 and 52.

समाधान खोजने के लिए दृष्टिकोण

आइए बिना किसी समस्या के दी गई समस्या को हल करने के लिए विभिन्न प्रक्रियाओं का संक्षिप्त विवरण दें।

क्रूर-बल दृष्टिकोण

एक ब्रूट-फोर्स दृष्टिकोण लागू किया जा सकता है, अर्थात, पहले दो तत्वों के योग के साथ MAX वैरिएबल को इनिशियलाइज़ करें और फिर प्रत्येक जोड़ी के एरे और चेकसम के माध्यम से ट्रैवर्स करें यदि यह MAX MAX नए योग मान से अधिक महत्वपूर्ण है। लेकिन इस प्रक्रिया में O((m*n)2) की समय जटिलता के साथ अधिक समय लगेगा।

कुशल दृष्टिकोण

एक कुशल दृष्टिकोण लागू किया जा सकता है, यानी, दो-चर MAX1 और MAX2 को 0 से प्रारंभ करें और फिर 2-डी सरणी के माध्यम से पार करें; जांचें कि क्या वर्तमान तत्व MAX1 से अधिक महत्वपूर्ण है। यदि हाँ, तो MAX2 को MAX1 से और MAX1 को मौजूदा भाग से बदलें। इस तरह, हम दो अधिकतम संख्याएँ ज्ञात कर पाएंगे, और स्पष्ट रूप से, दो पूर्ण संख्याओं का योग अधिकतम होगा।

उदाहरण

#include <bits/stdc++.h>
using namespace std;

int main() {
   int m = 3, n = 3;
   // initialising matrix with values
   int matrix[m][n] = {
      { 55, 22, 46 },
      { 6, 2, 1 },
      { 3, 24, 52 }
   };

   // initialising MAX1 and MAX2 to keep two maximum numbers.
   int MAX1 = INT_MIN;
   int MAX2 = INT_MIN;
   int result;

   for (int i = 0; i < m; i++) {
      for (int j = 0; j < n; j++) {
      // check if the element is greater than MAX1.
         if (matrix[i][j] > MAX1) {
            MAX2 = MAX1;
            MAX1 = matrix[i][j];
         }
         // check if the current element is between MAX1 and MAX2.
         else if (matrix[i][j] > MAX2 && matrix[i][j] <= MAX1) {
            MAX2 = matrix[i][j];
         }
      }
   }
   // calculating maximum sum by adding both maximum numbers.
   result = MAX1 + MAX2;
   cout << "maximum sum in Matrix : " << result ;

   return 0;
}

आउटपुट

maximum sum in Matrix : 107

उपरोक्त कोड की व्याख्या

  • तत्वों को 2-डी सरणी में संग्रहीत करना और MAX1 और MAX2 को INT के न्यूनतम मान के साथ प्रारंभ करना।
  • मैट्रिक्स के माध्यम से ट्रैवर्सिंग।
    • यदि वर्तमान भाग MAX1 से अधिक महत्वपूर्ण है, तो MAX2 को MAX1 से और MAX1 को वर्तमान तत्व से बदलें।
    • यदि वर्तमान टुकड़ा MAX1 से अधिक छोटा है और MAX2 से अधिक सार्थक है, तो MAX2 को वर्तमान तत्व से बदलें।
  • दो MAX1 और MAX2 जोड़कर परिणाम की गणना करें और कार्य को प्रिंट करें।

निष्कर्ष

इस लेख में, हमने किसी दिए गए मैट्रिक्स में अधिकतम योग के साथ एक जोड़ी खोजने पर चर्चा की। हमने समाधान खोजने के दृष्टिकोण पर चर्चा की और उसी के लिए C++ कोड पर भी चर्चा की। हम इस कोड को किसी अन्य भाषा जैसे जावा, सी, पायथन, आदि में लिख सकते हैं। हमें उम्मीद है कि आपको यह लेख मददगार लगा होगा।


  1. C++ में दिए गए अंतर के साथ एक जोड़ी खोजें

    विचार करें कि हमारे पास एक सरणी A है, n विभिन्न तत्व हैं। हमें सरणी A से एक युग्म (x, y) ज्ञात करना है, ताकि x और y के बीच का अंतर दिए गए अंतर d के समान हो। मान लीजिए कि तत्वों की एक सूची A =[10, 15, 26, 30, 40, 70] की तरह है, और दिया गया अंतर 30 है, तो जोड़ी होगी (10, 40) और (30, 70) इस समस्या को

  1. सी++ में एक सरणी में अधिकतम जीसीडी के साथ जोड़ी खोजें

    मान लीजिए कि हमारे पास सकारात्मक पूर्णांकों की एक सरणी है। हमारा काम सरणी से पूर्णांकों की जोड़ी को खोजना है, जहां GCD मान अधिकतम है। मान लीजिए A ={1, 2, 3, 4, 5}, तो आउटपुट 2 है। जोड़ी (2, 4) में GCD 2 है, अन्य GCD मान 2 से कम हैं। इस समस्या को हल करने के लिए, हम प्रत्येक तत्व के भाजक की गिनती को

  1. सी ++ प्रोग्राम बाइनरी सर्च दृष्टिकोण का उपयोग करके अधिकतम सबएरे योग खोजने के लिए

    बाइनरी सर्च (लॉग एन) की रन-टाइम जटिलता के साथ एक तेज़ खोज एल्गोरिदम है। यह सर्च एल्गोरिदम फूट डालो और जीतो के सिद्धांत पर काम करता है। इस एल्गोरिथम के ठीक से काम करने के लिए, डेटा संग्रह क्रमबद्ध रूप में होना चाहिए। बाइनरी सर्च संग्रह के सबसे मध्य आइटम की तुलना करके किसी विशेष आइटम की तलाश करता है।