C++中矩阵每行元素的最大和
在这个问题中,我们给定了一个二维矩阵mat[][]。我们的任务是创建一个程序,在C++中找到矩阵中每行元素的最大和。
问题描述
在这里,我们将通过从矩阵的每一行中取一个元素来找到最大和,这样当前行的元素大于要考虑作为和的上一行元素。我们将找到满足上述条件的元素的最大和,如果不可能则打印-1。
让我们举个例子来理解这个问题,
输入
mat[][] = {{4, 6, 1},
{2, 5, 7},
{9, 1, 2}}输出
22
解释
1st row = 6 2nd row = 7 3rd row = 9 Sum = 6 + 7 + 9 = 22
解决方案方法
一个简单的解决方案是从矩阵的最后一行开始。找到这里最大的数字并添加到MaxSum中,然后向上移动一行,找到小于其下方行最大元素的最大数字。一直做到到达顶行。如果我们找不到任何小于最大数字的数字,我们将返回-1。
示例
程序说明我们解决方案的工作原理,
#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
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP