c语言求输入一个二维数组,找出它的鞍点(Saddle Point)。所谓鞍点是指该位置的元素在该行最大,在该列上最小。当然,也可能鞍点不存在
时间: 2024-02-12 14:10:04 浏览: 67
好的,这是一个很经典的算法问题。下面是一个 C 语言的实现,可以求出一个二维数组的鞍点。
```
#include <stdio.h>
#define ROW 3
#define COL 4
int main() {
int arr[ROW][COL] = {{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}};
int i, j, k, min, max, flag;
for (i = 0; i < ROW; i++) {
min = arr[i][0];
flag = 1;
for (j = 1; j < COL; j++) {
if (arr[i][j] < min) {
min = arr[i][j];
k = j;
}
}
max = arr[0][k];
for (j = 0; j < ROW; j++) {
if (arr[j][k] > max) {
max = arr[j][k];
}
}
if (min == max) {
printf("鞍点为 arr[%d][%d] = %d\n", i, k, min);
flag = 0;
}
}
if (flag) {
printf("该矩阵没有鞍点!\n");
}
return 0;
}
```
在这个算法中,我们遍历每一行,找出该行中的最小值,并记录下它的列号 k。然后再遍历每一列,找出该列中的最大值 max。如果这个最大值等于我们记录下的最小值,那么这个位置就是鞍点。
需要注意的是,如果整个矩阵都没有鞍点,那么我们需要在循环结束后输出一个提示。
阅读全文