Cho ma trận vuông. Đếm số hàng và cột có tổng bằng tổng đường chéo chính hoặc đường chéo phụ.
Ví dụ ma trận 3x3:
4 1 7
10 3 5
2 2 11
Đường chéo chính: 4+3+11=18, đường chéo phụ: 7+3+2=12.
Hàng 1: 12 (trùng phụ), Hàng 2: 18 (trùng chính) → Kết quả: 2.
Giải thuật: Tính tổng 2 đường chéo, sau đó duyệt từng hàng/cột so sánh.
Ví dụ
#include <iostream>
#define row 3
#define col 3
using namespace std;
int diagonal_sum(int matrix[row][col]) {
int principal = 0, secondary = 0;
for (int i = 0, j = col - 1; i < col; i++, j--) {
principal += matrix[i][i];
secondary += matrix[i][j];
}
int count = 0;
for (int i = 0; i < col; i++) {
int r = 0, c = 0;
for (int j = 0; j < col; j++) {
r += matrix[i][j];
c += matrix[j][i];
}
if (r == principal || r == secondary) count++;
if (c == principal || c == secondary) count++;
}
return count;
}
int main() {
int matrix[row][col] = {{4,1,7},{10,3,5},{2,2,11}};
cout << "Count: " << diagonal_sum(matrix);
return 0;
}
Đầu ra
Count of rows/columns with sum equals to diagonal sum are: 2