找出一个二维数组中的鞍点,即该位置上的元素在该行是最大,在该列是最小。也可能没有鞍点。15行以内C语言
时间: 2024-10-18 20:03:47 浏览: 62
在C语言中,找出二维数组中的鞍点可以采用两层循环遍历的方式。首先找到每一行的最大值和每一列的最小值,然后比较这两个值。如果当前元素既不大于其所在行的最大值也不小于其所在列的最小值,那么它就是一个鞍点。
以下是简单的C语言代码实现:
```c
#include <stdio.h>
#define ROWS 15 // 假设数组最大15x15
#define COLS 15
int findMinimumInRow(int arr[][COLS], int row) {
int min = arr[row][0];
for (int i = 1; i < COLS; i++) {
if (arr[row][i] < min)
min = arr[row][i];
}
return min;
}
int findMaximumInCol(int arr[][COLS], int col) {
int max = arr[0][col];
for (int i = 1; i < ROWS; i++) {
if (arr[i][col] > max)
max = arr[i][col];
}
return max;
}
void findHorseRacePoint(int arr[][COLS]) {
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
if (arr[i][j] == arr[i][findMinimumInRow(arr, j)] &&
arr[i][j] == arr[findMaximumInCol(arr, i)][j]) {
printf("(%d,%d)\n", i+1, j+1); // 输出索引加1对应数组中的位置
}
}
}
}
int main() {
int arr[ROWS][COLS]; // 初始化数组
// ... 填充数组 ...
findHorseRacePoint(arr);
return 0;
}
```
阅读全文