C语言输入一个3*4二维数组,求其“鞍点”,即该位置上的元素在该行上最大,在该列上最小,如果没有鞍点输出"no saddlepoint"。
时间: 2024-02-21 20:00:32 浏览: 52
数组经典例题求鞍点.txt
5星 · 资源好评率100%
好的,我来帮你解答这个问题。
解题思路如下:
1. 遍历每个元素,对于每个元素,分别找出该行的最大值和该列的最小值。
2. 如果该元素是它所在行的最大值,并且是它所在列的最小值,那么它就是一个“鞍点”,可以打印出来。
3. 如果遍历完所有元素都没有发现“鞍点”,那么就输出 "no saddlepoint"。
下面是一段示例代码:
```c
#include <stdio.h>
int main() {
int a[3][4];
int i, j, k, max_row, min_col, is_saddle_point;
// 输入二维数组
printf("请输入一个3*4的二维数组:\n");
for (i = 0; i < 3; i++) {
for (j = 0; j < 4; j++) {
scanf("%d", &a[i][j]);
}
}
// 查找“鞍点”
is_saddle_point = 0; // 假设没有“鞍点”
for (i = 0; i < 3; i++) {
for (j = 0; j < 4; j++) {
max_row = a[i][0];
min_col = a[0][j];
for (k = 1; k < 4; k++) {
if (a[i][k] > max_row) {
max_row = a[i][k];
}
if (a[k][j] < min_col) {
min_col = a[k][j];
}
}
if (a[i][j] == max_row && a[i][j] == min_col) {
printf("鞍点坐标为 (%d, %d),值为 %d\n", i, j, a[i][j]);
is_saddle_point = 1; // 发现了“鞍点”
}
}
}
if (!is_saddle_point) {
printf("no saddlepoint\n");
}
return 0;
}
```
注意,这里使用了三重循环来遍历二维数组和查找“鞍点”,效率较低。在实际应用中,可以使用更高效的算法来实现。
阅读全文