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