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