这个思路有啥问题
查看原帖
这个思路有啥问题
1380404
zby2_楼主2024/6/30 12:44
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll minn=-1e18;
ll n,m,a[1005][1005],sum[1005][1005];
bool p[1005][1005];
ll dfs(ll aa,ll b){
	if(sum[aa][b]!=minn) return sum[aa][b];
	ll ans=a[aa][b];
	if(b-1>=1 && p[aa][b-1]==0){
		p[aa][b-1]=1;
		ans=max(dfs(aa,b-1),ans);
		p[aa][b-1]=0;
	}
	if(b+1<=n && p[aa][b+1]==0){
		p[aa][b+1]=1;
		ans=max(dfs(aa,b+1),ans);
		p[aa][b+1]=0;
	}
	if(aa+1<=n && p[aa+1][b]==0){
		p[aa+1][b]=1;
		ans=max(dfs(aa+1,b),ans);
		p[aa+1][b]=0;
	}
	sum[aa][b]=max(ans,sum[aa][b]);
	return sum[aa][b];
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;++i){
		for(int j=1;j<=m;++j) sum[i][j]=minn;
	}
	for(int i=1;i<=n;++i){
		for(int j=1;j<=m;++j) cin>>a[i][j];
	}
	dfs(n,m);
	cout<<sum[n][m]<<endl;
	return 0;
}
2024/6/30 12:44
加载中...