#include<stdio.h> int step(int a[100][100],int i,int j){ if(a[i][j]>a[i][j+1]&&a[i][j]>a[i][j-1]&&a[i][j]>a[i+1][j]&&a[i][j]>a[i-1][j]) return 0; int l=0,r=0,f=0,b=0; if(a[i][j]<a[i][j-1]) l=step(a,i,j-1)+1; if(a[i][j]<a[i][j+1]) r=step(a,i,j+1)+1; if(a[i][j]<a[i+1][j]) f=step(a,i+1,j)+1; if(a[i][j]<a[i-1][j]) b=step(a,i-1,j)+1; return (l>r?l:r)>(f>b?f:b)?(l>r?l:r):(f>b?f:b); } int main(){ int m,n,i,j; while(scanf("%d %d",&m,&n)!=EOF){ int a[100][100]={0}; for(i=1;i<=m;i++){ for(j=1;j<=n;j++) scanf("%d",&a[i][j]); } int max=0,t=0; for(i=1;i<=m;i++) { for(j=1;j<=n;j++) { t=step(a,i,j); if(max<t) max=t; } } printf("%d\n",max); } } |
Double click to view unformatted code.