回复 7楼 beyondyf
你说的 第二个问题 测试没问题吧
回复 12楼 tyf19938
调用你那个函数需要按照高度从低到高调用,比如这个数据:1 2
2 1
你对第一个数2搜索的时候,它右边的1还没计算过的
程序代码:#include<stdio.h>
int node[200][200],lenth[200][200],r,c;
int len(int i,int j)
{
int dir1=0,dir2=0,dir3=0,dir4=0,max=0;
if(lenth[i][j]>0)
return lenth[i][j];
if(i>=1 && node[i-1][j]<node[i][j])
dir1=1+len(i-1,j);
if(i<=r-2 && node[i+1][j]<node[i][j])
dir2=1+len(i+1,j);
if(j>=1 && node[i][j-1]<node[i][j])
dir3=1+len(i,j-1);
if(j<=c-2 && node[i][j+1]<node[i][j])
dir4=1+len(i,j+1);
if(max<dir1)
max=dir1;
if(max<dir2)
max=dir2;
if(max<dir3)
max=dir3;
if(max<dir4)
max=dir4;
return max;
}
int main()
{
int i,j,max=0;
while(scanf("%d%d",&r,&c),r||c)
{
max=0;
for(i=0;i<r;i++)
for(j=0;j<c;j++)
{
scanf("%d",&node[i][j]);
lenth[i][j]=0;
}
for(i=0;i<r;i++)
for(j=0;j<c;j++)
{
lenth[i][j]=len(i,j);
if(max<lenth[i][j])
max=lenth[i][j];
}
printf("%d\n",max+1);
}
return 0;
}