#1Wa求助
查看原帖
#1Wa求助
564864
TheCedar楼主2022/3/24 20:47

RT.

#include<bits/stdc++.h>
using namespace std;
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
int n,m,maps[1005][1005],bx,by,maxx=-1,minn=0x3f3f3f3f,ans=0,maxn=-1;
int memery[1005][1005];
void dfs(int x,int y,int sum) {
	if(maps[x][y]==minn) {
		maxn=max(maxn,sum);
		return;
	}
	else if(memery[x][y]!=0) {
		maxn=max(maxn,sum+memery[x][y]-1);
		return;
	}
	else {
		for(int i=0;i<4;i++) {
			int xx=x+dx[i];
			int yy=y+dy[i];
			if(xx>0&&xx<=n&&yy>0&&yy<=m&&maps[xx][yy]<maps[x][y]) {
				dfs(xx,yy,sum+1);
			}
		}
	}
}
int main() {
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++) {
		for(int j=1;j<=m;j++) {
			scanf("%d",&maps[i][j]);
			if(maps[i][j]<minn) {
				minn=maps[i][j];
			}
		}
	}
	for(int i=1;i<=n;i++) {
		for(int j=1;j<=m;j++) {
			maxn=0;
			dfs(i,j,1);
			ans=max(ans,maxn);
			memery[i][j]=maxn;
		}
	}
	cout<<ans;
	return 0;
}
2022/3/24 20:47
加载中...