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

更新於: 2020年10月15日

793 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告