悬赏关注
  • 板块灌水区
  • 楼主hkl99
  • 当前回复11
  • 已保存回复11
  • 发布时间2024/9/23 21:41
  • 上次更新2024/9/24 11:27:26
查看原帖
悬赏关注
770439
hkl99楼主2024/9/23 21:41

题目

代码

#include<bits/stdc++.h>
using namespace std;
int n,m,a[1002][1002],fx[3][2]={{-1,0},{1,0},{0,1}},mi=INT_MIN,c[1002][1002],xx[3];
bool b[1002][1002];
int dfs(int x,int y,int sum){
	if(x==n&&y==m){
		mi=max(mi,sum);
	}
	if(c[x][y]!=0){
		return c[x][y];
	} 
	int zz=INT_MIN;
	for(int i=0;i<3;i++){
		int nx,ny;
		nx=x+fx[i][0];
		ny=y+fx[i][1];
		if(nx>=1&&ny>=1&&nx<=n&&ny<=m&&b[nx][ny]==true){
			b[nx][ny]=false;
			xx[i]=dfs(nx,ny,sum+a[nx][ny]);
			b[nx][ny]=true;
		}
	} 
	c[x][y]=max(max(xx[0],xx[1]),xx[2]);
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>a[i][j];
		}
	}
	memset(b,true,sizeof(b));
	b[1][1]=false;
	dfs(1,1,a[1][1]);
	cout<<mi;
	return 0;
}

这个记忆化搜索那错了??

2024/9/23 21:41
加载中...