C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

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

  1. 特定の行列がC++でスパースであるかどうかを確認します

    ここでは、行列がスパースであるかどうかを確認する方法を説明します。スパース行列は、ほとんどの要素が0である行列です。スパース行列の定義は、要素の2/3が0の場合、その行列はスパース行列として示されます。これがスパース行列の例です。 これを確認するために、マトリックス内の0の数をカウントし、そのカウントが要素全体の2/3より大きい場合、これはスパースです。 例 #include <iostream> #include <cmath> #define MAX 5 using namespace std; bool isSparseMatrix(int arr[][M

  2. 与えられた行列がPythonでテプリッツ行列であるかどうかをチェックするプログラム

    行列Mがあるとすると、それがテプリッツ行列であるかどうかを確認する必要があります。ご存知のように、左から右に下がるすべての対角線が同じ値を持つ場合、行列はテプリッツと呼ばれます。 したがって、入力が次のような場合 7 2 6 3 7 2 5 3 7 その場合、出力はTrueになります。 これを解決するには、次の手順に従います- 最後の行を除く各行iについて、実行します 最後の列を除く各列について、 matrix [i、j]がmatrix [i + 1、j + 1]と同じでない場合、 Falseを返す Trueを返す