इस लेख में, हम किसी दिए गए मैट्रिक्स या 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++ कोड पर भी चर्चा की। हम इस कोड को किसी अन्य भाषा जैसे जावा, सी, पायथन, आदि में लिख सकते हैं। हमें उम्मीद है कि आपको यह लेख मददगार लगा होगा।