이 문제에서는 크기가 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