找出一个二维数组的“鞍点”,既该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。c语言解题思路
时间: 2023-11-06 09:18:09 浏览: 87
一个二维数组的“鞍点”可以用以下方法进行查找:
1.循环遍历二维数组,对于每个元素,找出该行上的最大值和该列上的最小值。
2.如果该元素的值既是所在行上的最大值,又是所在列上的最小值,则该元素就是一个“鞍点”。
3.如果没有找到“鞍点”,则输出“该二维数组没有鞍点”。
下面是一个C语言的代码示例:
```c
#include <stdio.h>
#define ROWS 3
#define COLS 4
int main() {
int matrix[ROWS][COLS] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
int i, j, max, min, saddle_point = 0;
for (i = 0; i < ROWS; i++) {
max = matrix[i][0];
for (j = 0; j < COLS; j++) {
if (matrix[i][j] > max) {
max = matrix[i][j];
}
}
for (j = 0; j < COLS; j++) {
if (matrix[i][j] == max) {
min = matrix[0][j];
for (int k = 0; k < ROWS; k++) {
if (matrix[k][j] < min) {
min = matrix[k][j];
}
}
if (matrix[i][j] == min) {
printf("Saddle point found at (%d, %d) with value %d\n", i, j, matrix[i][j]);
saddle_point = 1;
}
}
}
}
if (!saddle_point) {
printf("No saddle points found.");
}
return 0;
}
```
在这个例子中,二维数组的大小为3x4,我们通过两个循环分别找出每行的最大值和每列的最小值,并在第三个循环中判断是否存在“鞍点”。如果存在,则输出其位置和值,否则输出“没有鞍点”。
阅读全文