<找不同>
查看原帖
<找不同>
390228
DWT8125楼主2021/7/29 22:20

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;
}
2021/7/29 22:20
加载中...