我得程序有错吗
输入的第一行表示区域的行数R和列数C(1 <= R,C <= 100)。下面是R行,每行有C个整数,代表高度h,0<=h<=10000。
输出最长区域的长度。
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
#include<stdio.h>
main()
{
int a[100][100],b[100][100],h[100][100];
int r,c,x,y;
int step=0,go;
scanf("%d%d",&r,&c);
for(x=0;x<r;x++)
for(y=0;y<c;y++)
scanf("%d",&h[x][y]);
for(x=0;x<r;x++)
for(y=0;y<c;y++)
b[x][y]=1;
do
{
go=0;
step+=1;
for(x=0;x<r;x++)
for(y=0;y<c;y++)
{
a[x][y]=b[x][y];
b[x][y]=0;
}
for(x=0;x<r;x++)
for(y=0;y<c;y++)
if(a[x][y])
{
if(x>0 && h[x][y]>h[x-1][y])
{
b[x-1][y]=1;
go=1;
}
if(x<c-1 && h[x][y]>h[x+1][y])
{
b[x+1][y]=1;
go=1;
}
if(y>0 && h[x][y]>h[x][y-1])
{
b[x][y-1]=1;
go=1;
}
if(y<r-1 && h[x][y]>h[x][y+1])
{
b[x][y+1]=1;
go=1;
}
}
}while(go);
printf("%d\n",step);
return 0;
}