若矩阵a[m][n]中的某个元素aij是第i行中的最小值,同时又是第j列中的最大值,则称此元素为该矩阵中的一个马鞍点。假设二维数组存储矩阵a,试编写求出矩阵中所有马鞍点的算法。
时间: 2023-04-29 14:01:53 浏览: 197
算法步骤如下:
1. 遍历矩阵a中的每一个元素,对于每个元素a[i][j],都判断它是否是第i行中的最小值和第j列中的最大值。
2. 如果a[i][j]是第i行中的最小值且是第j列中的最大值,则将其记录下来,即为一个马鞍点。
3. 遍历完整个矩阵后,输出所有马鞍点的位置。
代码实现如下:
void findSaddlePoint(int a[][n], int m, int n) {
int i, j, k, flag;
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
flag = 1;
for (k = 0; k < n; k++) {
if (a[i][j] > a[i][k]) {
flag = 0;
break;
}
}
if (flag) {
for (k = 0; k < m; k++) {
if (a[i][j] < a[k][j]) {
flag = 0;
break;
}
}
}
if (flag) {
printf("Saddle point found at (%d, %d)\n", i, j);
}
}
}
}
其中,m和n分别为矩阵a的行数和列数。函数中的三重循环分别遍历每一个元素,判断它是否是一个马鞍点。如果是,则输出其位置。
阅读全文