#include <stdio.h> #define N 102 #define INF 0x7ffffff int map[N][N]; int dp[N][N]; int mo[4][2]={{-1,0},{0,1},{1,0},{0,-1}}; int n,m; int Max (int a,int b) { return a>b? a:b; } int dfs(int i,int j) { int k,in,jn,flag=0; for (k=0;k<4;k++) { in=i+mo[k][0]; jn=j+mo[k][1]; if (map[i][j]>map[in][jn]) { flag++; if (dp[in][jn]>dp[i][j]) //in jn 已搜过 { dp[i][j]=dp[in][jn]+1; } else { dp[i][j]=Max(dp[i][j],dfs(in,jn)+1); } } } if (!flag) dp[i][j]=1; return dp[i][j]; } int main () { //freopen("1088.txt","r",stdin); int i,j,max; while(scanf("%d%d",&n,&m)!=EOF) { for (i=1;i<=n;i++) { for (j=1;j<=m;j++) { scanf("%d",&map[i][j]); dp[i][j]&=0; } } for (i=0;i<=n+1;i++) map[i][0]=map[i][m+1]=INF; for (j=0;j<=m+1;j++) map[0][j]=map[n+1][j]=INF; max=1; for (i=1;i<=n;i++) { for (j=1;j<=m;j++) { if (!dp[i][j]) { max=Max(max,dfs(i,j)); } } } printf("%d/n",max); } }