समस्या विवरण
इस समस्या में, हमें एक द्वि-आयामी मैट्रिक्स mat[][] दिया गया है। हमारा कार्य C++ में मैट्रिक्स में प्रत्येक पंक्ति से तत्वों का अधिकतम योग खोजने के लिए एक प्रोग्राम बनाना है।
यहां, हम मैट्रिक्स की प्रत्येक पंक्ति से एक तत्व लेकर अधिकतम योग ढूंढेंगे जैसे कि वर्तमान पंक्ति में तत्व अंतिम पंक्ति के तत्व से बड़ा हो जिसे योग के लिए माना जाता है। हम उन तत्वों का अधिकतम योग ढूंढेंगे जो उपरोक्त शर्त का पालन करते हैं और यदि यह संभव नहीं है तो -1 प्रिंट करेंगे।
उदाहरण
इनपुट
mat[][] = {{4, 6, 1}, {2, 5, 7}, {9, 1, 2}}
आउटपुट
22
व्याख्या
पहली पंक्ति = 6 दूसरी पंक्ति = 7 तीसरी पंक्ति = 9 योग = 6 + 7 + 9 = 22
समाधान दृष्टिकोण
एक सरल समाधान मैट्रिक्स की अंतिम पंक्ति से शुरू करना है। यहां सबसे बड़ी संख्या ढूंढें और MaxSum में जोड़ें और फिर एक पंक्ति ऊपर जाएं, उस सबसे बड़ी संख्या से कम सबसे बड़ी संख्या ढूंढें जो नीचे की पंक्ति के सबसे बड़े तत्व से कम हो। इसे तब तक करें जब तक आप शीर्ष पंक्ति तक न पहुंच जाएं। यदि हमें सबसे बड़ी संख्या से कम कोई संख्या नहीं मिलती है तो हम -1 लौटाएंगे।
C++ कार्यान्वयन
#include <iostream>
using namespace std;
#define row 3
#define col 3
int RowMaxSum(int a[row][col]){
int maxValLastRow = 10000;
int maxSum = 0;
for (int i = row - 1; i >= 0; i--){
int maxNo = -1;
for (int j = 0; j < col; j++)
if (maxValLastRow > a[i][j] && a[i][j] > maxNo)
maxNo = a[i][j];
if (maxNo == -1)
return -1;
maxValLastRow = maxNo;
maxSum += maxValLastRow;
}
return maxSum;
}
int main(){
int a[3][3] = {{4, 6, 1},
{2, 5, 7},
{9, 1, 2}};
cout<<"The maximum sum of elements from each row in the matrix is "<<RowMaxSum(a);
return 0;
}
आउटपुट
The maximum sum of elements from each row in the matrix is 22