ในปัญหานี้ เราได้รับเมทริกซ์ mat[][] ขนาด N*N งานของเราคือค้นหาแถวที่มีผลรวมสูงสุดในเมทริกซ์
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
อินพุต
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