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

以上是 C ++中矩阵各行中元素的最大和 的全部内容, 来源链接: utcz.com/z/335232.html

回到顶部