#include <iostream>
#define MAXN 310
using namespace std;
int a[MAXN][MAXN],dp[MAXN][MAXN],dx[4]={0,0,1,-1},dy[4]={1,-1,0,0},n,m;
int dfs(int x,int y){
if(dp[x][y]) return dp[x][y];
dp[x][y]=1;
for(int i=0;i<4;i++){
int tx=x+dx[i],ty=y+dy[i];
if(tx>=1&&tx<=n&&ty>=1&&ty<=m&&a[x][y]>a[tx][ty]){
dp[x][y]=max(dp[x][y],dfs(tx,ty)+1);
}
}
return dp[x][y];
}
int main() {
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++) cin>>a[i][j];
int ans=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++) ans=max(ans,dfs(i,j));
cout<<ans<<endl;
return 0;
}
滑雪 记忆化搜索
最新推荐文章于 2024-09-03 18:29:17 发布