输入一个3行3列的整型二维数组,找出这个二维数组中的鞍点,即该位置上的元素在所在行为最大,在所在列为最小。如果有,输出符合条件的元素的位置[行下标,列下标];如果没有这样的元素,输出“No”
时间: 2024-12-31 17:49:05 浏览: 86
在C语言中,我们可以遍历整个3x3的二维数组,同时跟踪当前行的最大值和当前列的最小值。如果某个元素既是所在行的最大值又是所在列的最小值,那么它就是鞍点。以下是一个简单的C语言程序来查找并输出鞍点:
```c
#include <stdio.h>
#define ROWS 3
#define COLS 3
void findHorseRace(int arr[ROWS][COLS]) {
int max_row[ROWS], min_col[COLS];
int i, j;
// 初始化最大值和最小值为第一个元素
for (i = 0; i < ROWS; i++) {
max_row[i] = arr[i][0];
min_col[0] = arr[0][i];
}
// 遍历数组找到最大值和最小值
for (i = 1; i < ROWS; i++) {
for (j = 1; j < COLS; j++) {
if (arr[i][j] > max_row[i]) {
max_row[i] = arr[i][j]; // 更新行最大值
}
if (arr[i][j] < min_col[j]) {
min_col[j] = arr[i][j]; // 更新列最小值
}
}
}
// 检查是否存在鞍点
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
if (arr[i][j] == max_row[i] && arr[i][j] == min_col[j]) {
printf("[%.0f, %.0f]\n", i + 1, j + 1); // 输出位置(+1是因为索引从0开始)
return;
}
}
}
printf("No\n"); // 如果没有找到鞍点,则输出"No"
}
int main() {
int arr[ROWS][COLS] = { {1, 9, 5}, {6, 3, 7}, {8, 2, 4} }; // 示例数组
findHorseRace(arr);
return 0;
}
```
阅读全文