इस समस्या में, हमें एक द्वि-आयामी सरणी arr[][] दी गई है। हमारा काम C++ में दिए गए मैट्रिक्स के किसी भी सब-मैट्रिक्स के लिए संभव अधिकतम ट्रेस खोजने के लिए एक प्रोग्राम बनाना है।
समस्या का विवरण
हमें किसी भी उप-मैट्रिक्स के लिए अधिकतम ट्रेस खोजने की आवश्यकता है। ट्रेस मैट्रिक्स के मुख्य विकर्ण के तत्वों का योग है।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट
arr[][] ={{-2, 5, 3}, {1, 6, 2}, {4, 3, 9}}
आउटपुट
15
स्पष्टीकरण
For the sub-array: {1, 6} {9, 3}
समाधान दृष्टिकोण
2-डी सरणी के मुख्य विकर्ण के तत्व का उपयोग करके अधिकतम योग खोजने का एक आसान समाधान है। ट्रेस अधिकतम सबअरे योग द्वारा दिया जाता है।
उदाहरण
हमारे समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम,
#include <iostream> using namespace std; #define row 3 #define col 3 int CalcMaxTraceSubMat(int mat[row][col]){ int maxtraceSum = 0, r, c, traceSum; for (int i = 0; i < row; i++){ for (int j = 0; j < col; j++){ r = i, c = j, traceSum = 0; while (r < row && c < col){ traceSum += mat[r][c]; r++; c++; maxtraceSum = max(traceSum, maxtraceSum); } } } return maxtraceSum; } int main() { int mat[row][col] = { {-2, 5, 6}, {1, 6, 2}, {4, 3, 9} }; cout<<"The maximum trace possible for any submatrix is "<<CalcMaxTraceSubMat(mat); return 0; }
आउटपुट
The maximum trace possible for any submatrix is 15