dfs+记忆化搜索 tle第二个点
查看原帖
dfs+记忆化搜索 tle第二个点
170410
向晚楼主2021/5/26 19:24

求助大佬qwq

#include<iostream>
using namespace std;
int n,m,map[105][105],f[105][105],ans;

int m1[4]={-1,0,0,1};
int m2[4]={0,-1,1,0};
void dfs(int x,int y,int s){
	if(f[x][y]>=s) return ;
	f[x][y]=s;
	for(int i=0;i<4;i++){
		int mx=x+m1[i],my=y+m2[i];
		if(map[mx][my]>=map[x][y]) continue;
		if(mx<1||mx>n||my<1||my>m) continue;
		dfs(mx,my,s+1);
	}
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			cin>>map[i][j];
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			if(!f[i][j]) dfs(i,j,1);
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			ans=max(ans,f[i][j]);
	cout<<ans;
	return 0;
}
2021/5/26 19:24
加载中...