Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

주어진 행렬이 C++에서 Toeplitz인지 아닌지 찾기

<시간/>

이 문제에서는 크기가 n*n인 2D 정방 행렬 mat[][]이 제공됩니다. 우리의 임무는 주어진 행렬이 Toeplitz인지 아닌지를 찾는 것입니다.

토플리츠 행렬 대각 행렬이라고도 하는 대각 행렬은 대각선의 요소가 왼쪽 위 모서리에서 오른쪽 아래 모서리로 시작하는 행렬입니다.

문제를 이해하기 위해 예를 들어 보겠습니다.

입력:

매트[][] ={{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.