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

주어진 행렬이 C++에서 Hankel인지 아닌지 확인

<시간/>

정방 행렬이 있다고 가정하고 우리의 임무는 행렬이 Hankel 행렬인지 여부를 확인하는 것입니다. Hankel 행렬은 왼쪽에서 오른쪽으로 오름차순 스큐 대각 요소가 일정한 정사각형 행렬입니다. 행렬이 아래와 같다고 가정 -

1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
5 6 7 8 9

행렬이 Hankel Matrix인지 확인하려면 mat[i, j] =ai+j인지 확인해야 합니다. 아니면. ai+j 다음과 같이 정의할 수 있습니다 -

$$a_{i+j}=\begin{cases}mat[i+j,0]

예시

#include <iostream>
#define N 5
using namespace std;
bool isHankelMat(int mat[N][N], int n) {
   for (int i = 0; i < n; i++) {
      for (int j = 0; j < n; j++) {
         if (i + j < n) {
            if (mat[i][j] != mat[i + j][0])
            return false;
         } else {
            if (mat[i][j] != mat[i + j - n + 1][n - 1])
            return false;
         }
      }
   }
   return true;
}
int main() {
   int n = 5;
   int mat[N][N] = {
      { 1, 2, 3, 4, 5},
      { 2, 3, 4, 5, 6},
      { 3, 4, 5, 6, 7},
      { 4, 5, 6, 7, 8},
      { 5, 6, 7, 8, 9}
   };
   if(isHankelMat(mat, n))
      cout << "This is Hankel Matrix";
   else
      cout << "This is not Hankel Matrix";
}

출력

This is Hankel Matrix