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.