编程实现:输入一个不超过10x10的矩阵,计算矩阵的马鞍点,马鞍点即它的值在行中最大 ,在它所在的列中最小。、
【示例1】
【输入】
3 3
1 2 3 4 5 6 7 8 9
【输出】
3
【样例2】
【输入】
3 3
1 2 6 4 5 3 7 8 9
【输出】
no saddle
#include <stdio.h>
#define N 10
int main()
{
int a[N][N], m, n, i, j, k, x, found;
scanf("%d%d", &m, &n);
for (i = 0; i < m; i++)
for (j = 0; j < n; j++)
scanf("%d", &a[i][j]);
found = 0;
for (i = 0; i < m; i++)
{
k = 0;
x = a[i][0];
for (j = 1; j < n; j++)
{
if (a[i][j] > x)
{
x = a[i][j];
k = j;
}
}
for (j = 0; j < m; j++)
if (a[j][k] < x)
break;
if (j == m) {
printf("%d\n", x);
found = 1;
}
}
if (!found)
printf("no saddle\n");
return 0;
}
供参考:
#include<stdio.h>
#define N 10
int main()
{
int m, n, k, max, min, i, j, a[N][N] = { 0 };
int row = 0, col = 0;
scanf("%d %d", &m, &n);
for (i = 0; i < m; i++)
for (j = 0; j < n; j++)
scanf("%d", &a[i][j]);
for (i = 0; i < m; i++)
{
max = a[i][0];
for (j = 0; j < n; j++)
{
if (a[i][j] > max)
{
max = a[i][j];
col = j;
}
}
min = a[0][col];
for (k = 0; k < m; k++)
{
if (a[k][col] < min)
{
min = a[k][col];
row = k;
}
}
if (max == min){
printf("%d\n", a[row][col]);
break;
}
}
if (max != min)
printf("no saddle\n");
return 0;
}