Computer >> Máy Tính >  >> Lập trình >> C ++

Tổng tối đa của các phần tử từ mỗi hàng trong ma trận trong C ++

Trong bài toán này, chúng ta được đưa ra một ma trận hai [] []. Nhiệm vụ của chúng tôi là tạo một chương trình để tìm tổng số phần tử lớn nhất từ ​​mỗi hàng trong ma trận trong C ++.

Mô tả vấn đề

Ở đây, chúng ta sẽ tìm tổng lớn nhất bằng cách lấy một phần tử từ mỗi hàng của ma trận theo cách sao cho phần tử ở hàng hiện tại lớn hơn phần tử ở hàng cuối cùng được coi là tổng. Chúng tôi sẽ tìm tổng lớn nhất của các phần tử tuân theo điều kiện trên và in ra -1 nếu không thể.

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào

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

Đầu ra

22

Giải thích

1st row = 6
2nd row = 7
3rd row = 9
Sum = 6 + 7 + 9 = 22

Phương pháp tiếp cận giải pháp

Một giải pháp đơn giản là bắt đầu từ hàng cuối cùng của ma trận. Tìm số lớn nhất ở đây và thêm vào MaxSum rồi di chuyển một hàng lên trên, tìm số lớn nhất nhỏ hơn phần tử lớn nhất của hàng bên dưới nó. Làm điều này cho đến khi bạn đạt đến hàng trên cùng. Nếu chúng tôi không tìm thấy bất kỳ số nào nhỏ hơn số lớn nhất thì chúng tôi sẽ trả về -1.

Ví dụ

Chương trình minh họa hoạt động của giải pháp của chúng tôi,

#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;
}

Đầu ra

The maximum sum of elements from each row in the matrix is 22