与えられた行列がC++でテプリッツであるかどうかを調べます
この問題では、サイズn*nの2D正方行列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.
-
特定の行列がC++でスパースであるかどうかを確認します
ここでは、行列がスパースであるかどうかを確認する方法を説明します。スパース行列は、ほとんどの要素が0である行列です。スパース行列の定義は、要素の2/3が0の場合、その行列はスパース行列として示されます。これがスパース行列の例です。 これを確認するために、マトリックス内の0の数をカウントし、そのカウントが要素全体の2/3より大きい場合、これはスパースです。 例 #include <iostream> #include <cmath> #define MAX 5 using namespace std; bool isSparseMatrix(int arr[][M
-
与えられた行列がPythonでテプリッツ行列であるかどうかをチェックするプログラム
行列Mがあるとすると、それがテプリッツ行列であるかどうかを確認する必要があります。ご存知のように、左から右に下がるすべての対角線が同じ値を持つ場合、行列はテプリッツと呼ばれます。 したがって、入力が次のような場合 7 2 6 3 7 2 5 3 7 その場合、出力はTrueになります。 これを解決するには、次の手順に従います- 最後の行を除く各行iについて、実行します 最後の列を除く各列について、 matrix [i、j]がmatrix [i + 1、j + 1]と同じでない場合、 Falseを返す Trueを返す