C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++のマトリックスで合計が最大の行を検索します


この問題では、サイズN*Nの行列mat[][]が与えられます。私たちのタスクは、マトリックス内で合計が最大の行を見つけることです。

問題を理解するために例を見てみましょう

入力

mat[][] = {
   8, 4, 1, 9
   3, 5, 7, 9
   2, 4, 6, 8
   1, 2, 3, 4
}

出力

Row 2, sum 24

説明

Row 1: sum = 8+4+1+9 = 22
Row 2: sum = 3+5+7+9 = 24
Row 3: sum = 2+4+6+8 = 20
Row 4: sum = 1+2+3+4 = 10

ソリューションアプローチ

この問題の簡単な解決策は、各行の要素の合計を見つけて、最大合計を追跡することです。次に、すべての行をトラバースした後、合計が最大の行を返します。

ソリューションの動作を説明するプログラム

#include <iostream>
using namespace std;
#define R 4
#define C 4
void findMax1Row(int mat[R][C]) {
   int maxSumRow = 0, maxSum = -1;
   int i, index;
   for (i = 0; i < R; i++) {
      int sum = 0;
      for(int j = 0; j < C; j++){
         sum += mat[i][j];
      }
      if(sum > maxSum){
         maxSum = sum;
         maxSumRow = i;
      }
   }
   cout<<"Row : "<<(maxSumRow+1)<<" has the maximum sum
   which is "<<maxSum;
}
int main() {
   int mat[R][C] = {
      {8, 4, 1, 9},
      {3, 5, 7, 9},
      {2, 4, 6, 8},
      {1, 2, 3, 4}
   };
   findMax1Row(mat);
   return 0;
}

出力

Row : 2 has the maximum sum which is 24

  1. C++のバイナリツリーで最大レベルの合計を見つける

    この問題では、正と負の値を持つ二分木が与えられます。私たちのタスクは、バイナリツリーで最大レベルの合計を見つけることです。 問題の説明: 二分木があります。二分木のすべてのレベルの合計を見つけて、それらの最大値を返します。 問題を理解するために例を見てみましょう 入力: 出力: 5 説明: レベル1:3の要素の合計 レベル2の要素の合計:-3 + 4 =1 レベル3の要素の合計:5 --1 + 6-5 =5 ソリューションアプローチ この問題を解決するには、レベル順トラバーサルを使用してツリーをトラバースする必要があります。そして、レベルごとに、合計

  2. C ++を使用して、マトリックス内の合計が最大の列を検索します。

    サイズがMxNの行列があるとします。合計が最大の列を見つける必要があります。このプログラムでは、トリッキーなアプローチには従わず、配列を列ごとにトラバースし、各列の合計を取得します。合計が最大の場合は、合計と列インデックスを出力します。 例 #include<iostream> #define M 5 #define N 5 using namespace std; int colSum(int colIndex, int mat[M][N]){    int sum = 0;    for(int i = 0; i<M; i++){