在 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.
广告