一开始把行和列弄反了,结果总是不对,到最后总是找出来了。

#include<stdio.h>
int y[107][107];
int z[107][107];
int m,n;
int count=0,number=0,max,x1=0,y1=0,flag=1;
int dir[4][2]= {{-1,0},{1,0},{0,1},{0,-1}};
void bfs(int x2,int y2)
{
int xx,yy;
for(int e=0; e<4; e++)
{
xx=x2+dir[e][0];
yy=y2+dir[e][1];
if(xx<0||xx>=m||yy<0||yy>=n)
{
count--;
continue;
}
if(y[xx][yy]>y[x2][y2])
{
number=y[xx][yy]-y[x2][y2];
count+=number;
}
else
{
number=y[x2][y2]-y[xx][yy];
count-=number;
}
}
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&m,&n);
for(int a=0; a<m; a++)
for(int b=0; b<n; b++)
scanf("%d",&y[a][b]);
for(int c=0; c<m; c++)
for(int d=0; d<n; d++)
{
bfs(c,d);
z[c][d]=count;
count=0;
}
max=z[0][0];
for(int g=0; g<m; g++)
for(int h=0; h<n; h++)
{
//printf("%d ",z[g][h]);
if(z[g][h]>=max)
{
max=z[g][h];
x1=g;
y1=h;
}
}
printf("Case %d: %d %d %d\n",flag++,max,x1+1,y1+1);
}
return 0;
}