找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点。
#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;
}
代码说明:
- 寻找二维数组中的鞍点,即该位置的元素在其所在行上最大,在其所在列上最小。
- 对每一行,找到最大值及其列索引,然后检查该列中是否是最小值。
- 输出所有满足条件的鞍点,如果没有则输出“无鞍点”。