基础算法题——迷宫(递推)

本文探讨了如何解决迷宫问题,从暴力的深度优先搜索(DFS)方法出发,指出其在大尺寸迷宫中可能导致超时的问题。然后重点介绍了使用递推法优化解题思路,通过状态转移方程实现高效求解。最后提供了通过测试的代码实现。
摘要由CSDN通过智能技术生成

迷宫

题目链接
题目1
题目2


解题思路
①、暴力法

利用 dfs 遍历每一条可能的路径,将遍历的权值和不断取余。
不足:当 n、m 取较大的情况下,所遍历的路径可能会暴增,出现超时的情况。


②、递推法

从题目上我们可以发现,最终的权值和是要对 mod 取余的,利用这个特点,我们可以实现递推。

状态转移方程:
dp[i][j][k] | = dp[i-1][j][(k-mg[i][j]+mod)%mod];
dp[i][j][k] | = dp[i][j-1][(k-mg[i][j]+mod)%mod];

原理:在迷宫上,假设已知点(i-1, j)与(i, j-1)所能得到的权值和,那么我们就能求出点(i, j)所能得到的权力和。


AC代码
#include<bits/stdc++.h>
const int mod = 1e4+7;
bool dp[110][110][10010];
int mg[110][110]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值