C语言写一个函数,找出一个二维数组中的鞍点(即该位置上的元素在该行上最大、在该列上最小),如果有鞍点,返回鞍点值,没有返回0。
时间: 2023-11-06 07:12:08 浏览: 98
可以这样写一个函数:
```c
int findSaddlePoint(int arr[][N], int m, int n) {
for (int i = 0; i < m; i++) {
int min_in_row = arr[i][0];
int col_index = 0;
// 找出该行最小值以及对应的列下标
for (int j = 1; j < n; j++) {
if (arr[i][j] < min_in_row) {
min_in_row = arr[i][j];
col_index = j;
}
}
// 判断该行最小值是否为该列最大值
int max_in_col = arr[0][col_index];
for (int k = 1; k < m; k++) {
if (arr[k][col_index] > max_in_col) {
max_in_col = arr[k][col_index];
}
}
if (max_in_col == min_in_row) {
return max_in_col;
}
}
return 0;
}
```
其中,`arr` 为二维数组,`m` 和 `n` 分别为数组的行数和列数,`N` 为数组的最大列数(可以定义为常量或者传入参数)。函数中先遍历每一行,找出该行最小值以及对应的列下标,然后在该列上找出最大值,如果最大值等于该行最小值,就找到了一个鞍点,返回该值。如果遍历完所有行都没有找到鞍点,就返回0。
阅读全文