在这个问题中,我们得到大小为n * n的2D方阵mat [] []。我们的任务是查找给定的矩阵是否为Toeplitz。
Toeplitz矩阵 也称为对角矩阵,是指对角线上的元素从左上角到右下角开始的矩阵。
输入:
Mat [] [] = {{3,5,1},
{4,3,2},
{1,2,3}}
输出: 是
解释:
对角线:(0,0),(1,1),(2,2)具有相同的值3。
解决方法:
解决该问题的一种简单方法是检查对角线索引处的所有元素。这些对角线值将是i和j值相同的索引。
因此,我们需要检查所有i-> 0到n和j-> 0到n。如果i = j,并且mat [i] [j]都相同。
#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<<"矩阵是Toepliz矩阵。"; else cout<<"矩阵不是Toepliz矩阵。"; return 0; }输出结果
矩阵是Toepliz矩阵。