การหาผลรวมเส้นทแยงมุมของเมทริกซ์สี่เหลี่ยมจัตุรัส
สมมติว่าเรามีเมทริกซ์สี่เหลี่ยมจัตุรัส เราต้องการหาผลรวมขององค์ประกอบบนเส้นทแยงมุมหลักและเส้นทแยงมุมรอง โดยไม่นับองค์ประกอบที่ซ้อนทับกัน (จุดกึ่งกลาง)
ตัวอย่าง
หากอินพุตเป็นเมทริกซ์ 4x4 ดังนี้:
| 10 | 5 | 9 | 6 |
| 8 | 15 | 3 | 2 |
| 3 | 8 | 12 | 3 |
| 2 | 11 | 7 | 3 |
องค์ประกอบเส้นทแยงมุมหลักคือ [10, 15, 12, 3] ผลรวม = 40
องค์ประกอบเส้นทแยงมุมรองคือ [6, 3, 8, 2] ผลรวม = 19
ผลรวมทั้งหมด = 59
ขั้นตอนการแก้ปัญหา
- m := จำนวนแถวของเมทริกซ์
- ถ้า m = 1 ให้คืนค่า matrix[0][0]
- กำหนด count = 0
- วนลูป i จาก 0 ถึง m-1:
- บวก matrix[i][i] (เส้นทแยงมุมหลัก) เข้า count
- บวก matrix[i][-1-i] (เส้นทแยงมุมรอง) เข้า count
- ถ้า m เป็นเลขคี่ ให้ลบ matrix[m//2][m//2] ออกจาก count (เพื่อไม่ให้นับจุดกึ่งกลางซ้ำ)
- คืนค่า count
ตัวอย่างโค้ด Python
def solve(matrix):
m = len(matrix)
if m == 1:
return matrix[0][0]
count = 0
for i in range(m):
count += matrix[i][i]
count += matrix[i][-1 - i]
if m % 2 == 1:
count -= matrix[m // 2][m // 2]
return count
matrix = [[10,5,9,6],[8,15,3,2],[3,8,12,3],[2,11,7,3]]
print(solve(matrix)) # Output: 59
อินพุต
[[10,5,9,6],[8,15,3,2],[3,8,12,3],[2,11,7,3]]
เอาต์พุต
59