深搜的理解(二维数组的理解)

本文介绍了在解决类似洛谷P1605题目的路径计数问题时,如何运用深度优先搜索(DFS)的方法。关键点包括从起点调用DFS,设定终止条件,通过dx和dy数组确定递进方向,防止越界和死循环,以及利用全局变量存储答案。
摘要由CSDN通过智能技术生成

在遇到某些题目时(洛谷:p1605)是找多少种路径和多少种选择时,常常都会用到dfs,学习完后的几点理解:

1、第一次调用dfs时(在main函数里)的参数为起始坐标(开始的数据)

2、先写终止条件和终止时应该做什么,在return返回;

3、再找递进的条件,在上面走迷宫的例题中,定义dx[],dy[]来表示下一步要去的格子,如果下一个各自超出边界或者遇到障碍就不能走,就选择剩下的步骤(比如向上走会超出边界,那么试试向下走,左走,右走),

4、(对于我自己该注意的)递进条件找到后,就要找到用什么方法实现递进(大部分是使用for循环来实现递进)

5、(1)如果通过循环发现有格子可以走,那么在去往下一个格子前需要将现在的格子设置为路障,不然到下一个格子后,会发现有一个选择(即刚刚过来的格子)可以走,这样会死循环

(2)当找到一种答案后,就会原路返回,返回的途中需要把自己途中设置的路障清楚,不妨碍下一次不同的旅途。

5、大部分的题目是通过创建全局变量或数组保存答案,最后输出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值