社区讨论
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 条回复,欢迎继续交流。
正在加载回复...