RT,改得几乎和第一篇题解一样,就是不知道哪里出问题了
#include<cstdio>
#include<algorithm>
using namespace std;
int r,c,a[101][101],s[101][101],ans=1,dx,dy;
const int d[4][2]={{-1,0},{1,0},{0,-1},{0,1}};
int dfs(int x,int y){
if(s[x][y]) return s[x][y];
for(int i=0;i<4;i++){
dx=x+d[i][0]; dy=y+d[i][1];
if(dx>0&&dx<=r&&dy>0&&dy<=c&&a[x][y]>a[dx][dy]){
dfs(dx,dy);
s[x][y]=max(s[x][y],s[dx][dy]+1);
}
}
return s[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",&a[i][j]);
s[i][j]=1;
}
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++)
ans=max(ans,dfs(i,j));
printf("%d",ans);
return 0;
}