C语言写一个函数,找出一个二维数组中的鞍点(即该位置上的元素在该行上最大、在该列上最小),如果有鞍点,返回鞍点值,没有返回0。
时间: 2023-11-06 19:05:56 浏览: 20
以下是一个实现该功能的 C 语言函数:
```c
int findSaddlePoint(int arr[][N], int m, int n) {
int i, j, k, min, max, flag;
for (i = 0; i < m; i++) {
min = arr[i][0];
flag = 1;
for (j = 1; j < n; j++) {
if (arr[i][j] < min) {
min = arr[i][j];
k = j;
}
}
for (j = 0; j < m; j++) {
if (arr[j][k] > min) {
flag = 0;
break;
}
}
if (flag) {
max = arr[i][k];
for (j = 0; j < n; j++) {
if (arr[i][j] > max) {
max = arr[i][j];
}
}
if (max == min) {
return max;
}
}
}
return 0;
}
```
其中,`arr` 为二维数组,`m` 和 `n` 分别为数组的行数和列数,`N` 为数组的最大列数,需要在函数外定义为常量。函数中,首先遍历每一行,找到该行的最小值,然后遍历该列,判断该列上的元素是否都大于等于该行的最小值,若是,则找到了一个可能的鞍点,然后再在该行上找到最大值,判断是否与该行的最小值相等,若是,则说明找到了一个真正的鞍点,返回该值;若不是,则继续遍历下一行。若遍历完所有行仍未找到鞍点,则返回0。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![text/x-c](https://img-home.csdnimg.cn/images/20210720083646.png)