हमें एक मैट्रिक्स दिया गया है और कार्य एक मैट्रिक्स की दो पंक्तियों में तत्वों के योग के बीच सबसे बड़ा अंतर खोजना है। मान लीजिए कि हमारे पास i पंक्तियों और j स्तंभों के साथ एक मैट्रिक्स M[i,j] है। पंक्तियों को R0 . होने दें Ri-1 . तक . अंतर की गणना (Ry . के तत्वों का योग) को घटाकर की जाएगी ) - (Rx . के तत्वों का योग ), जहां x
आइए अब समझते हैं कि हमें एक उदाहरण का उपयोग करके क्या करना है -
इनपुट
M[4][4] = { { 1,2,0,5 }, {0,1,1,0}, {7,2,3,2} {1,2,4,1}};
आउटपुट
Maximum difference here is : 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}};
आउटपुट
Maximum difference here is : 5
स्पष्टीकरण - यहाँ पंक्ति 4 के तत्वों का योग अधिकतम है जो 10 है और पंक्ति 2 के तत्वों का योग न्यूनतम है, अर्थात 5। तो अधिकतम अंतर 10-5 =10 है
निम्नलिखित कार्यक्रम में उपयोग किया गया दृष्टिकोण इस प्रकार है
-
मैट्रिक्स में पंक्तियों और स्तंभों की संख्या के लिए इनपुट लें जैसे कि इसमें कम से कम दो पंक्तियाँ हों।
-
Rowmaxd () फ़ंक्शन में हम इनपुट मैट्रिक्स पास कर रहे हैं और यह पंक्ति गणना और कॉलम गिनती है और पंक्तियों के योग का अधिकतम अंतर लौटा रहा है।
-
यहां हम पहले मैट्रिक्स एम [पंक्ति] [कॉल] की प्रत्येक पंक्ति के तत्वों के योग को आरएसम [i] नामक सरणी में संग्रहीत करेंगे। ध्यान दें कि RSum[row] की लंबाई M[row][col] में पंक्तियों की संख्या के अनुसार होती है।
-
तब हम एमडी को RSum[1]-RSum[0] के बीच अधिकतम अंतर मानेंगे। यहाँ RSum[0] पंक्ति 0 के सभी तत्वों का योग है और RSums[1] पंक्ति 1 के सभी तत्वों का योग है।
-
हम यह भी मान रहे हैं कि RSum[0] RSum[row] में सबसे कम है और इसे MIN वैरिएबल में स्टोर कर रहा है।
-
लूप के लिए 0 से i तक हम प्रत्येक RSum [पंक्ति] को पार करेंगे और RSum [i] -MIN> MD के बीच के अंतर की तुलना करेंगे। अगर ऐसा है तो एमडी को अपडेट करें। अन्य जांच RSum[row]
उदाहरण
#include<stdio.h> #define MAX 100 //create function to calculate maximum difference between sum of elements of two rows such that second row appears before the first int rowmaxd(int M[][MAX], int row, int col){ //for storing sum of elements of each row 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; } //calculate now max difference between two elements of RSum such that in RSum[j]-RSum[i], i<j int MD=RSum[1]-RSum[0]; int MIN=RSum[0]; for (i = 1; i < row; i++){ //if this difference is more than MD,the update MD if(RSum[i]-MIN>MD) MD=RSum[i]-MIN; //if this value is even less than MIN,then update MIN if(RSum[i]<MIN) MIN=RSum[i]; } return MD; } // Driver program 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<<”Maximum difference of sum of elements in two rows in a matrix is: ”<<rowmaxd(mat, r, c); return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो हमें निम्न आउटपुट मिलेगा -
Maximum difference of sum of elements in two rows in a matrix: 5