#include <iostream> using namespace std; int n,m,map[110][110],dp[110][110]; int dir[4][2]={-1,0,0,-1,0,1,1,0}; int bfs(int x,int y){ if(dp[x][y]) return dp[x][y]; else{ for(int i=0;i<4;i++){ int nx=x+dir[i][0]; int ny=y+dir[i][1]; if(nx>=0&&ny>=0&&nx<n&&ny<m){ if(map[nx][ny]>map[x][y]) dp[x][y]=max(dp[x][y],bfs(nx,ny)+1); } } return dp[x][y]; } } int main(){ while(cin>>n>>m){ int maxn=0; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ cin>>map[i][j]; } } for(int i=0;i<n;i++) for(int j=0;j<m;j++) maxn=max(maxn,bfs(i,j)); cout<<maxn<<endl; } return 0; } |
Double click to view unformatted code.