在 C++ 中判断给定矩阵是否为托普利兹矩阵


在这个问题中,我们给定一个大小为 n*n 的二维方阵 mat[][]。我们的任务是判断给定的矩阵是否为托普利兹矩阵。

托普利兹矩阵也称为对角常数矩阵,是指其对角线上的元素从左上到右下都相等的矩阵。

让我们举个例子来理解这个问题,

输入

          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<<"Matrix is a Toepliz matrix.";
   else
      cout<<"Matrix is not a Toepliz matrix.";
     
   return 0;
}

输出

Matrix is a Toepliz matrix.

更新于: 2021-01-22

189 次浏览

启动你的 职业生涯

通过完成课程获得认证

开始学习
广告