找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点。
#include <stdio.h>
int main() {
int matrix[4][4] = {
{10, 17, 13, 28},
{21, 14, 16, 40},
{30, 42, 23, 39},
{24, 11, 19, 17}
};
int n = 4, m = 4;
int found = 0;
for (int i = 0; i < n; i++) {
int max = matrix[i][0], col = 0;
for (int j = 1; j < m; j++) {
if (matrix[i][j] > max) {
max = matrix[i][j];
col = j;
}
}
int min = matrix[0][col];
for (int k = 1; k < n; k++) {
if (matrix[k][col] < min) {
min = matrix[k][col];
}
}
if (max == min) {
printf("鞍点: matrix[%d][%d] = %d\n", i, col, max);
found = 1;
}
}
if (!found) {
printf("无鞍点\n");
}
return 0;
}
代码说明:
- 寻找二维数组中的鞍点,即该位置的元素在其所在行上最大,在其所在列上最小。
- 对每一行,找到最大值及其列索引,然后检查该列中是否是最小值。
- 输出所有满足条件的鞍点,如果没有则输出“无鞍点”。