#include<bits/stdc++.h> using namespace std; int grap[105][105]; int f[105][105]; int dx[4]={0,-1,0,1}; int dy[4]={-1,0,1,0}; int m,k; int dfs(int x,int y){ if(f[x][y]) return f[x][y]; f[x][y]=1; for(int i=0;i<4;++i){ int xx=x+dx[i]; int yy=y+dy[i]; if(xx<=m&&xx>0&&yy<=k&&yy>0&&grap[xx][yy]<grap[x][y]){ dfs(xx,yy); f[x][y]=max(f[xx][yy]+1,f[x][y]); } } return f[x][y]; } int main(void) { while(cin>>m>>k&&m!=EOF){ for(int i=1;i<=m;++i){ for(int j=1;j<=k;++j){ scanf("%d",&grap[i][j]); } } int ans=0; memset(f,0,sizeof(f)); for(int i=1;i<=m;++i){ for(int j=1;j<=k;++j){ ans=max(dfs(i,j),ans); } } cout<<ans-1<<endl; } return 0; } |
Double click to view unformatted code.