हमें एक मैट्रिक्स दी गई है और कार्य मैट्रिक्स की दो पंक्तियों में तत्वों के योग का सबसे बड़ा अंतर ढूंढना है। मान लीजिए हमारे पास i पंक्तियों और j स्तंभों वाली मैट्रिक्स M[i,j] है। पंक्तियों को R0 से Ri-1 तक माना जाता है। अंतर की गणना (Ry के तत्वों का योग) - (Rx के तत्वों का योग) घटाकर की जाएगी, जहां x < y।
आइए अब एक उदाहरण का उपयोग करके समझते हैं कि हमें क्या करना है:
इनपुट
M[4][4] = { { 1, 2, 0, 5 }, { 0, 1, 1, 0 }, { 7, 2, 3, 2 }, { 1, 2, 4, 1 } }; आउटपुट
यहां अधिकतम अंतर है: 12
व्याख्या
यहां पंक्ति 2 के तत्वों का योग अधिकतम है जो 14 है और पंक्ति 1 के तत्वों का योग न्यूनतम है, जो 2 है। इसलिए अधिकतम अंतर 14 - 2 = 12 है।
इनपुट
M[4][4] = { { 0, 2, 0, 5 }, { 0, 1, 4, 0 }, { 1, 2, 3, 2 }, { 2, 2, 6, 0 } }; आउटपुट
यहां अधिकतम अंतर है: 5
व्याख्या
यहां पंक्ति 4 के तत्वों का योग अधिकतम है जो 10 है और पंक्ति 2 के तत्वों का योग न्यूनतम है, जो 5 है। इसलिए अधिकतम अंतर 10 - 5 = 5 है।
उपयोग किया गया दृष्टिकोण
मैट्रिक्स में पंक्तियों और स्तंभों की संख्या के लिए इनपुट लें जैसे कि इसमें कम से कम दो पंक्तियां हों।
rowmaxd() फ़ंक्शन में हम इनपुट मैट्रिक्स और इसकी पंक्ति गणना और स्तंभ गणना पास कर रहे हैं और पंक्तियों के योग का अधिकतम अंतर लौटा रहे हैं।
यहां हम पहले मैट्रिक्स M[row][col] की प्रत्येक पंक्ति के तत्वों का योग RSum[i] नामक सरणी में संग्रहीत करेंगे। ध्यान दें कि RSum[row] की लंबाई M[row][col] में पंक्तियों की संख्या के अनुसार होती है।
फिर हम MD को RSum[1] - RSum[0] के रूप में अधिकतम अंतर मान लेंगे। यहां RSum[0] पंक्ति 0 के सभी तत्वों का योग है और RSum[1] पंक्ति 1 के सभी तत्वों का योग है।
यह भी मान लेते हैं कि RSum[0] RSum[row] में सबसे छोटा है और इसे MIN चर में संग्रहीत करते हैं।
0 से i तक फॉर लूप में हम प्रत्येक RSum[row] को पार करेंगे और RSum[i] - MIN > MD के बीच अंतर की तुलना करेंगे। यदि ऐसा है, तो MD अद्यतन करें। अन्यथा जांचें कि क्या RSum[row] < MIN और MIN को अलग से अद्यतन करें।
उदाहरण
#include <stdio.h> #define MAX 100 // दो पंक्तियों के तत्वों के योग के बीच अधिकतम अंतर की गणना के लिए फ़ंक्शन बनाएं जैसे कि दूसरी पंक्ति पहली से पहले प्रकट होती है int rowmaxd(int M[][MAX], int row, int col){ // प्रत्येक पंक्ति के तत्वों का योग संग्रहीत करने के लिए int RSum[row]; for(int i = 0; i < row; i++){ int sum = 0; for(int j = 0; j < col; j++) sum += M[i][j]; RSum[i] = sum; } // अब RSum के दो तत्वों के बीच अधिकतम अंतर की गणना करें जैसे कि RSum[j] - RSum[i] में, i < j int MD = RSum[1] - RSum[0]; int MIN = RSum[0]; for (int i = 1; i < row; i++){ // यदि यह अंतर MD से अधिक है, तो MD अद्यतन करें if(RSum[i] - MIN > MD) MD = RSum[i] - MIN; // यदि यह मान MIN से भी कम है, तो MIN अद्यतन करें if(RSum[i] < MIN) MIN = RSum[i]; } return MD; } // ड्राइवर प्रोग्राम int main(){ int r = 5, c = 4; int mat[][MAX] = { {-1, 2, 3, 4}, {6, 3, 0, 1}, {-1, 7, 8, -3}, {3, 5, 1, 4}, {2, 1, 1, 0} }; cout << "मैट्रिक्स में दो पंक्तियों के तत्वों के योग का अधिकतम अंतर: " << rowmaxd(mat, r, c); return 0; } आउटपुट
उपरोक्त कोड चलाने पर हमें निम्नलिखित आउटपुट मिलेगा:
मैट्रिक्स में दो पंक्तियों के तत्वों के योग का अधिकतम अंतर: 5