Elairin176 @ 2022-12-12 21:13:30
#include <iostream>
using namespace std;
int r,c,a[101][101],mem[101][101],ans,dx[4]={1,-1,0,0},dy[4]={0,0,1,-1};
inline int max(int a,int b){
return a>b?a:b;
}
int dfs(int x,int y){
if(mem[x][y]){
return mem[x][y];
}
int t=0;
for(int i=0;i<4;i++){
int xx=x+dx[i],yy=y+dy[i];
if(xx<0||yy<0||xx>=r||yy>=c||a[xx][yy]>a[x][y]){
t=max(t,1);
continue;
}
if(mem[xx][yy]){
t=max(t,1+mem[xx][yy]);
}else{
t=max(t,1+dfs(xx,yy));
}
}
mem[x][y]=t;
return t;
}
int main(void){
scanf("%d%d",&r,&c);
for(int i=0;i<r;i++){
for(int j=0;j<c;j++){
scanf("%d",&a[i][j]);
}
}
for(int i=0;i<r;i++){
for(int j=0;j<c;j++){
if(mem[i][j]){
ans=max(ans,mem[i][j]);
}else{
ans=max(ans,dfs(i,j));
}
}
}
printf("%d",ans);
}
by zxy123bc @ 2022-12-12 21:21:08
@destructor line14
a[xx][yy]>a[x][y]
改为
a[xx][yy]>=a[x][y]
by zxy123bc @ 2022-12-12 21:21:55
@destructor 卷啊
by Elairin176 @ 2022-12-12 21:27:29
@zxy123bc 过力,谢谢qwq