মনে করুন একটি স্কোয়ার ম্যাট্রিক্স আছে, আমাদের কাজ হল চেক করা ম্যাট্রিক্সটি 행켈 (Hankel) ম্যাট্রিক্স কিনা। 행켈 ম্যাট্রিক্স হল একটি স্কোয়ার ম্যাট্রিক্স যেখানে বাম থেকে ডানে আরোহী স্কিউ-ডায়াগোনাল (skew-diagonal) উপাদানগুলো কনস্ট্যান্ট থাকে।
উদাহরণ ম্যাট্রিক্স:
| 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 |
ম্যাট্রিক্স 행켈 কিনা চেক করতে mat[i][j] = ai+j কিনা তা যাচাই করতে হবে। ai+j হল:
$$a_{i+j}=\begin{cases}mat[i+j][0] & \text{if } i+j < n \\ mat[i+j-n+1][n-1] & \text{otherwise} \end{cases}$$
উদাহরণ কোড
#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";
return 0;
}
আউটপুট
This is Hankel Matrix