与えられた行列が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を返す