在遇到某些题目时(洛谷:p1605)是找多少种路径和多少种选择时,常常都会用到dfs,学习完后的几点理解:
1、第一次调用dfs时(在main函数里)的参数为起始坐标(开始的数据)
2、先写终止条件和终止时应该做什么,在return返回;
3、再找递进的条件,在上面走迷宫的例题中,定义dx[],dy[]来表示下一步要去的格子,如果下一个各自超出边界或者遇到障碍就不能走,就选择剩下的步骤(比如向上走会超出边界,那么试试向下走,左走,右走),
4、(对于我自己该注意的)递进条件找到后,就要找到用什么方法实现递进(大部分是使用for循环来实现递进)
5、(1)如果通过循环发现有格子可以走,那么在去往下一个格子前需要将现在的格子设置为路障,不然到下一个格子后,会发现有一个选择(即刚刚过来的格子)可以走,这样会死循环
(2)当找到一种答案后,就会原路返回,返回的途中需要把自己途中设置的路障清楚,不妨碍下一次不同的旅途。
5、大部分的题目是通过创建全局变量或数组保存答案,最后输出