Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Đếm hàng/cột có tổng bằng tổng đường chéo trong C++


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