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