题目
50分记录
记忆化不知道为什么没过。
代码:
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=110;
int n,m,a[N][N],ans,ll[N][N];
int dfs(int x,int y){
if(x<1||y<1||x>n||y>m)return 0;
if(ll[x][y]!=0)return ll[x][y];
int num=0;
if(a[x-1][y]<a[x][y])num=max(num,dfs(x-1,y)+1);
if(a[x+1][y]<a[x][y])num=max(num,dfs(x+1,y)+1);
if(a[x][y-1]<a[x][y])num=max(num,dfs(x,y-1)+1);
if(a[x][y+1]<a[x][y])num=max(num,dfs(x,y+1)+1);
ll[x][y]=num;
return num;
}
signed main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
ans=max(dfs(i,j),ans);
}
}
cout<<ans;
return 0;
}