用C语言且不用遍历找出一个4x4二维数组中的鞍点,即该位置上的元素在该行最大,在该列最小(不会出现重复数字的情况)。可能没有鞍点。
时间: 2023-06-13 20:04:18 浏览: 52
可以使用以下算法来查找鞍点:
1. 首先遍历每行,找到该行的最大值。
2. 然后在每个最大值所在的列中找到最小值。
3. 如果最小值恰好等于该行的最大值,则找到了鞍点。
下面是使用这个算法的 C 代码实现:
```c
#include <stdio.h>
#define ROWS 4
#define COLS 4
int main()
{
int matrix[ROWS][COLS] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16}
};
int i, j, max, min, found;
found = 0;
for (i = 0; i < ROWS; i++) {
max = matrix[i][0];
// Find the maximum value in the row
for (j = 1; j < COLS; j++) {
if (matrix[i][j] > max) {
max = matrix[i][j];
}
}
// Find the minimum value in the column
for (j = 0; j < COLS; j++) {
if (matrix[i][j] == max) {
min = matrix[0][j];
for (int k = 1; k < ROWS; k++) {
if (matrix[k][j] < min) {
min = matrix[k][j];
}
}
// Check if the minimum value is equal to the maximum value
if (min == max) {
printf("Saddle point found at (%d, %d)\n", i, j);
found = 1;
}
}
}
}
if (!found) {
printf("No saddle point found\n");
}
return 0;
}
```
在上面的代码中,我们首先定义了一个 4x4 的二维数组 `matrix`。然后,我们遍历每行,并在每行中找到最大值。接着,我们在每个最大值所在的列中找到最小值。如果最小值恰好等于该行的最大值,则找到了鞍点,并输出该点的位置。如果没有找到鞍点,则输出一个消息表示没有鞍点。