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

Kiểm tra ma trận Toeplitz trong C++


Cho ma trận vuông mat[][] kích thước n*n. Nhiệm vụ: kiểm tra ma trận có phải Toeplitz không.

Ma trận Toeplitz (hay ma trận đường chéo) là ma trận mà các phần tử trên đường chéo chính (từ góc trên-trái đến dưới-phải) có cùng giá trị.

Ví dụ:

Đầu vào:

Mat[][] = {{3, 5, 1},
{4, 3, 2},
{1, 2, 3}}

Đầu ra: Yes

Giải thích: Đường chéo (0,0), (1,1), (2,2) đều bằng 3.

Phương pháp giải

Kiểm tra tất cả phần tử mat[i][i] (i=0..n-1) có cùng giá trị với mat[0][0] không.

Chương trình minh họa

Ví dụ

#include <iostream>
using namespace std;

#define N 4
bool isToeplizMatrix(int mat[N][N]) {
    int diagVal = mat[0][0];
    for (int i = 0; i < N; i++) {
        if (mat[i][i] != diagVal) {
            return false;
        }
    }
    return true;
}

int main() {
    int mat[N][N] = { { 6, 7, 8, 9 },
                      { 4, 6, 7, 8 },
                      { 1, 4, 6, 7 },
                      { 0, 1, 4, 6 } };
    if (isToeplizMatrix(mat))
        cout << "Matrix is a Toepliz matrix.";
    else
        cout << "Matrix is not a Toepliz matrix.";
    return 0;
}

Kết quả

Matrix is a Toepliz matrix.