内容目录
标准记忆化搜索 模板题
Program P1088; var ans,n,m,i,j:longint; a,f:array[0..101,0..101] of longint; function max(a,b:longint):longint; begin if a>b then exit(a) else exit(b); end; function dfs(x,y:longint):longint; var i,j:longint; begin if f[x,y]>0 then exit(f[x,y]); dfs:=0; if a[x-1,y]<a[x,y] then dfs:=max(dfs,dfs(x-1,y)+1); if a[x+1,y]<a[x,y] then dfs:=max(dfs,dfs(x+1,y)+1); if a[x,y-1]<a[x,y] then dfs:=max(dfs,dfs(x,y-1)+1); if a[x,y+1]<a[x,y] then dfs:=max(dfs,dfs(x,y+1)+1); f[x,y]:=dfs; end; begin read(n,m); fillchar(a,sizeof(a),127); for i:=1 to n do for j:=1 to m do read(a[i,j]); fillchar(f,sizeof(f),0); ans:=0; for i:=1 to n do for j:=1 to m do begin if f[i,j]=0 then ans:=max(ans,dfs(i,j)); end; writeln(ans+1); end.