Giả sử ta có ma trận vuông, tìm tổng các đường chéo. Chỉ cộng các phần tử trên đường chéo chính và đường chéo phụ, bỏ qua phần tử giao nhau (nếu có).
Ví dụ ma trận 4x4:
| 10 | 5 | 9 | 6 |
| 8 | 15 | 3 | 2 |
| 3 | 8 | 12 | 3 |
| 2 | 11 | 7 | 3 |
Giải thuật
m := len(matrix)- Nếu
m == 1: trả vềmatrix[0][0] count := 0- For
itừ 0 đếnm-1:count += matrix[i][i](chéo chính)count += matrix[i][-1-i](chéo phụ)
- Nếu
mlẻ:count -= matrix[m//2][m//2](trừ phần tử giao) - Trả về
count
Ví dụ (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))
Input
[[10,5,9,6],[8,15,3,2],[3,8,12,3],[2,11,7,3]]
Output
59