在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矩阵。