wa 了四个点 求助大佬
查看原帖
wa 了四个点 求助大佬
570507
witw楼主2022/1/25 14:56
#include<iostream>
#include<algorithm>
using namespace std;
int n,m;
const int N=1005;
const int fx[4]={0,0,1,-1};
const int fy[4]={1,-1,0,0}; 
int f[N][N],a[N][N];
bool vis[N][N];
void dfs(int x,int y){
	for(int i=0;i<4;++i){
		int x1=x+fx[i],y1=y+fy[i];
		if(x1<=0||y1<=0||x1>n||y1>m||a[x][y]<a[x1][y1])continue;
		if(vis[x1][y1]){
			vis[x][y]=true;
			f[x][y]=max(f[x][y],f[x1][y1]+a[x][y]-a[x1][y1]);
		}else{
			vis[x][y]=true;
			dfs(x1,y1);
			f[x][y]=f[x1][y1]+a[x][y]-a[x1][y1];
		}
	}
	if(vis[x][y])return;
	else{
		f[x][y]=0;
		vis[x][y]=true;
		return;
    }
}
int main(){
	int i,j,res=0;
	cin>>n>>m;
	for(i=1;i<=n;++i){
		for(j=1;j<=m;++j){
			cin>>a[i][j];
		}
	}
	for(i=1;i<=n;++i){
		for(j=1;j<=m;++j){
			if(!vis[i][j])dfs(i,j);
		} 
	} 
	for(i=1;i<=n;++i){
		for(j=1;j<=m;++j)res=max(res,f[i][j]);
	}
	cout<<res+1;
	return 0;
}
2022/1/25 14:56
加载中...