用C语言写出:找出一个4x4二维数组中的鞍点,即该位置上的元素在该行最大,在该列最小(不会出现重复数字的情况)。可能没有鞍点。 输入样例: 12 15 17 23 16 34 24 39 14 46 31 42 11 29 33 25 输出样例:鞍点:23
时间: 2023-06-11 19:09:12 浏览: 67
以下是C语言代码实现:
```c
#include <stdio.h>
#define ROWS 4
#define COLS 4
int main() {
int matrix[ROWS][COLS];
int i, j, k, max_in_row, min_in_col, saddle_point;
// 读入矩阵
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
scanf("%d", &matrix[i][j]);
}
}
saddle_point = -1; // 初始化鞍点为-1
// 遍历矩阵寻找鞍点
for (i = 0; i < ROWS; i++) {
max_in_row = 0;
for (j = 1; j < COLS; j++) {
if (matrix[i][j] > matrix[i][max_in_row]) {
max_in_row = j;
}
}
for (k = 0; k < ROWS; k++) {
if (matrix[k][max_in_row] < matrix[i][max_in_row]) {
break;
}
}
if (k == ROWS) {
min_in_col = i;
for (k = 0; k < COLS; k++) {
if (matrix[k][max_in_row] < matrix[min_in_col][max_in_row]) {
min_in_col = k;
}
}
if (min_in_col == i) {
saddle_point = matrix[i][max_in_row];
break;
}
}
}
if (saddle_point != -1) {
printf("鞍点:%d\n", saddle_point);
} else {
printf("没有鞍点\n");
}
return 0;
}
```
代码中先定义了一个4x4的二维数组`matrix`用于存放输入的矩阵,然后通过双重循环读入矩阵。接着使用三重循环遍历矩阵,依次找到每行的最大值和每列的最小值,判断该位置是否为鞍点,如果是则将鞍点的值记录在`saddle_point`中并跳出循环。最后根据`saddle_point`的值输出结果。
相关推荐
![](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)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)