错在哪?
问题描述找一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小(各行、列上不存在相等的数)。鞍点最多一个,也可能不存在。
输入
第一行是测试数据的组数。以下每组数据的首行是二维数组的行数和列数(行和列的数目均不大于100),之后为二维数组。
输出
对输入的每组测试数据,如果存在鞍点,输出鞍点所在的行、列及其值;如果不存在,输出"N"
输入样例
2
2 2
1 3
3 2
3 3
11 22 33
99 33 55
44 55 66
输出样例
N
0 2 33
代码如下:
#include<stdio.h>
void saddlepoint(int a[][100])
{
int i, j, k, max, maxj,b,c;
int flag=0;
for(i=0; i<b; i++)
{
max=a[i][0]; maxj=0;
for(j=0; j<c; j++)
if(a[i][j]>max)
{
max=a[i][j];
maxj=j;
}
}
for(k=0; k<c; k++)
{
if(max>a[k][maxj])
break;
else if(k==b-1)
{
flag=1;
printf("%d %d %d\n", i, maxj, max);
}
}
if(!flag)
printf("N\n");
}
int main()
{
int i, j, a[100][100];
int b,c,k,n;
scanf("%d",&n);
for(k=1;k<=n;k++)
{
scanf("%d %d",&b,&c);
for(i=0; i<b; i++)
{
for(j=0; j<c; j++)
{
scanf("%d", &a[i][j]);
}
}
saddlepoint(a);
}
return 0;
}
为什么输出全是N?