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