社区讨论

dfs爆炸求助

P7074[CSP-J 2020] 方格取数参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@lo13zjae
此快照首次捕获于
2023/10/22 14:49
2 年前
此快照最后确认于
2023/11/02 14:20
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int n,m,a[1005][1005],dp[1005][1005],vis[1005][1005];
int zx[4]={0,1,-1,0};
int zy[4]={0,0,0,1};
void dfs(int x,int y,int sum)
{
	if(dp[x][y]<=sum)return;
	dp[x][y]=sum;
	if(x==n&&y==m)return;
	for(int i=1;i<=3;i++)
	{
		int xx=x+zx[i],yy=y+zy[i];
		if(xx<1||xx>n||yy<1||yy>m||vis[xx][yy])continue;
		vis[xx][yy]=1;
		dfs(xx,yy,sum+a[xx][yy]);
		vis[xx][yy]=0;
	}
}
int main()
{
	memset(dp,0x3f,sizeof(dp));
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)scanf("%d",&a[i][j]);
//	cout<<a[2][1];
	vis[1][1]=1;
	dfs(1,1,a[1][1]);
	printf("%d",dp[n][m]);
}
记忆化dfs,哪里挂了

回复

2 条回复,欢迎继续交流。

正在加载回复...