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

Kiểm tra ma trận Hankel C++

Ma trận Hankel: Ma trận vuông mà mọi phần tử trên đường chéo ngược (skew-diagonal) đều bằng nhau. Tức mat[i][j] chỉ phụ thuộc vào i+j.

Ví dụ 5×5: 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 7 8 9

Điều kiện

mat[i][j] = a_{i+j} với: a_{i+j} = mat[i+j][0] nếu i+j < n a_{i+j} = mat[i+j-n+1][n-1] nếu i+j ≥ n

Ví dụ minh họa

#include <iostream>
#define N 5
using namespace std;

bool isHankelMat(int mat[N][N], int n) {
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++) {
            if (i + j < n) {
                if (mat[i][j] != mat[i + j][0]) return false;
            } else {
                if (mat[i][j] != mat[i + j - n + 1][n - 1]) return false;
            }
        }
    return true;
}

int main() {
    int mat[N][N] = {
        {1,2,3,4,5},
        {2,3,4,5,6},
        {3,4,5,6,7},
        {4,5,6,7,8},
        {5,6,7,8,9}
    };
    cout << (isHankelMat(mat, 5) ? "La ma tran Hankel" : "KHONG phai ma tran Hankel");
}

Kết quả

La ma tran Hankel