写一个C语言函数,找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点。
时间: 2023-11-06 15:09:46 浏览: 103
找出一个二维数组中的鞍点,即该位置上的元素在该行最大,在该列上最小 也可能没有鞍点
以下是一个可能的实现:
```c
void findSaddlePoint(int matrix[][N], int rows, int columns) {
int i, j, k, max, min;
int found = 0;
for (i = 0; i < rows; i++) {
max = matrix[i][0];
for (j = 1; j < columns; j++) {
if (matrix[i][j] > max) {
max = matrix[i][j];
}
}
for (j = 0; j < columns; j++) {
if (matrix[i][j] == max) {
min = matrix[0][j];
for (k = 1; k < rows; k++) {
if (matrix[k][j] < min) {
min = matrix[k][j];
}
}
if (matrix[i][j] == min) {
printf("Saddle point found at (%d, %d): %d\n", i, j, matrix[i][j]);
found = 1;
}
}
}
}
if (!found) {
printf("No saddle point found.\n");
}
}
```
其中,`matrix`是二维数组,`rows`和`columns`分别是数组的行数和列数。在函数中,我们首先遍历每一行,找到该行上的最大元素,然后在该行上遍历每一个元素,如果该元素等于最大元素,就在该元素所在的列上寻找最小元素,如果该元素也等于最小元素,就说明找到了一个鞍点,输出它的位置和值。如果最后没有找到鞍点,就输出一个提示。
阅读全文