हमें एक मैट्रिक्स दिया गया है और कार्य एक मैट्रिक्स की दो पंक्तियों में तत्वों के योग के बीच सबसे बड़ा अंतर खोजना है। मान लीजिए कि हमारे पास i पंक्तियों और j स्तंभों के साथ एक मैट्रिक्स M[i,j] है। पंक्तियों को R0 . होने दें Ri-1 . तक . अंतर की गणना (Ry . के तत्वों का योग) को घटाकर की जाएगी ) - (Rx . के तत्वों का योग ), जहां x आइए अब समझते हैं कि हमें एक उदाहरण का उपयोग करके क्या करना है -
इनपुट
आउटपुट
स्पष्टीकरण - यहां पंक्ति 2 के तत्वों का योग अधिकतम 14 है और पंक्ति 1 के तत्वों का योग न्यूनतम है, अर्थात 2 है। अतः अधिकतम अंतर 14-2=12 है।
इनपुट
आउटपुट
स्पष्टीकरण - यहाँ पंक्ति 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]
यदि हम उपरोक्त कोड चलाते हैं तो हमें निम्न आउटपुट मिलेगा -M[4][4] = {
{ 1,2,0,5 },
{0,1,1,0},
{7,2,3,2}
{1,2,4,1}};
Maximum difference here is : 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
निम्नलिखित कार्यक्रम में उपयोग किया गया दृष्टिकोण इस प्रकार है
उदाहरण
#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