当前位置: 代码迷 >> C语言 >> 我得程序有错吗
  详细解决方案

我得程序有错吗

热度:85   发布时间:2006-01-30 19:38:00.0
我得程序有错吗
输入的第一行表示区域的行数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;
}
----------------解决方案--------------------------------------------------------

没空看啊~ 自己用vc运行下不就知道了么!!
有错误用单目调试啊~ 提点技术问题啊~


----------------解决方案--------------------------------------------------------
  相关解决方案