用 C++ 检查给定的矩阵是否是汉克尔矩阵
假如我们有一个方阵,我们的任务是检查该矩阵是不是汉克尔矩阵。汉克尔矩阵是一种方阵,其中从左到右的每个递增反对角线元素都是常数。假设一个矩阵如下所示 -
| 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]< n\mat[i+j-n+1,n-1]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";
}输出
This is Hankel Matrix
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP