在C ++中查找给定的矩阵是否为Toeplitz

在这个问题中,我们得到大小为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矩阵。