इस समस्या में, हमें एक दो-आयामी सरणी arr[][] दी गई है। हमारा कार्य C++ में दिए गए मैट्रिक्स के किसी भी उप-मैट्रिक्स के लिए अधिकतम ट्रेस संभव ढूंढने के लिए एक प्रोग्राम बनाना है।
समस्या विवरण
हमें किसी भी उप-मैट्रिक्स के लिए अधिकतम ट्रेस ढूंढना होगा। ट्रेस मैट्रिक्स के मुख्य विकर्ण के तत्वों का योग है।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट
arr[][] ={{-2, 5, 3}, {1, 6, 2}, {4, 3, 9}}
आउटपुट
15
व्याख्या
उप-सरणी के लिए: {1, 6} {9, 3}
समाधान दृष्टिकोण
एक सरल समाधान 2-D सरणी के मुख्य विकर्ण के तत्व का उपयोग करके अधिकतम योग ढूंढना है। ट्रेस अधिकतम उपसरणी योग द्वारा दिया जाता है।
उदाहरण
हमारे समाधान के काम को दिखाने वाला प्रोग्राम,
#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<<"किसी भी उपमैट्रिक्स के लिए अधिकतम संभव ट्रेस है "<<CalcMaxTraceSubMat(mat); return 0; }
आउटपुट
किसी भी उपमैट्रिक्स के लिए अधिकतम संभव ट्रेस है 15