用c语言编写个程序,题目如下马鞍数,是指数阵n*m中在行上最小而在列上最大的数。如:数阵n*m,其中 n=5 m=5 1 6 7 8 9 4 5 6 7 8 3 4 5 2 1 2 3 4 9 0 5 6 7 6 8 则第5行第1列的数字“5”即为该数阵的一个马鞍数。 (注意:行上最小数在一行中可能有多个哦,都需判断是否为马鞍数) 输入 第一行两个用空格隔开的自然数n与m,表示n行m列,n,m<=100; 接下来n行每行有m个用空格隔开的整数(最大不超过 32767)。 输出 输出若干行:如果存在马鞍数,则输出所有马鞍数,每行一个,为行和列以及马鞍数。 如果不存在马鞍数,则输出'no find'。
时间: 2023-05-24 22:04:44 浏览: 286
```c
#include <stdio.h>
int main() {
int n, m, a[100][100];
scanf("%d%d", &n, &m);
//读入矩阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
scanf("%d", &a[i][j]);
}
}
//遍历每个数字,寻找马鞍数
int flag = 0; //是否找到马鞍数的标志
for (int i = 0; i < n; i++) {
int min = a[i][0], col = 0; //当前行最小值和最小值所在的列
for (int j = 1; j < m; j++) {
if (a[i][j] < min) {
min = a[i][j];
col = j;
}
}
//检查这个最小值是否是所在列的最大值
int flag2 = 1; //是否是所在列最大值的标志
for (int k = 0; k < n; k++) {
if (a[k][col] > min) {
flag2 = 0;
break;
}
}
if (flag2) { //找到了马鞍数
flag = 1;
printf("%d %d %d\n", i + 1, col + 1, min);
}
}
if (!flag) printf("no find\n"); //没有找到马鞍数
return 0;
}
```
阅读全文