喵の耳 @ 2019-02-16 11:10:06
莫名WA第一个点
WA的一声就哭了
记忆化
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
int g[101][101];
int h[101][101];
bool vis[101][101];
int c,r;
int maxn,tmp,mxn;
int f(int x,int y){
if(vis[x][y]) return g[x][y];
vis[x][y]=1;
maxn=1;
for(int k=0;k<4;k++){
int nx=dx[k]+x;
int ny=dy[k]+y;
if(nx<1||nx>r||ny<1||ny>c) continue;
if(h[nx][ny]>=h[x][y]) continue;
int tmp=f(nx,ny);
maxn=max(maxn,tmp+1);
}
g[x][y]=maxn;
return g[x][y];
}
int main(){
scanf("%d %d",&r,&c);
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++)
scanf("%d",&h[i][j]);
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++){
tmp=f(i,j);
mxn=max(mxn,tmp);
}
printf("%d",mxn);
return 0;
}