Computer >> Máy Tính >  >> Lập trình >> C ++

Kiểm tra xem một ma trận đã cho có phải là Hankel hay không trong C ++

Giả sử chúng ta có một ma trận vuông, nhiệm vụ của chúng ta là kiểm tra xem ma trận đó có phải là ma trận Hankel hay không. Ma trận Hankel là một ma trận vuông, trong đó mỗi phần tử xiên tăng dần từ trái sang phải là không đổi. Giả sử một ma trận giống như dưới đây -

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

Để kiểm tra ma trận có phải là Ma trận Hankel hay không, chúng ta phải kiểm tra xem mat [i, j] =a i + j hay không. a i + j có thể được định nghĩa là -

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

Ví dụ

#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";
}

Đầu ra

This is Hankel Matrix