YCOJ-DFS

DFS搜索是搜索中的一种,即深度优先搜索(Depth First Search),其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次。

图示:

如图,这是邻接矩阵,我们要从s走到e,且“*”不能走,求所有方案。

YCOJ-DFS_第1张图片

 

 

 

 

 

 


 

首先,从s出发,标记s

YCOJ-DFS_第2张图片


 

然后通过s只能走到下面一个点,重复几次,我们走到了第一个岔路口。

YCOJ-DFS_第3张图片


 

这时,我们有两个方向可以走,先向右走。

YCOJ-DFS_第4张图片


 

现在只能往下走,到达了e,方案数+1,返回。

YCOJ-DFS_第5张图片


 

现在该处理刚才的的另一种方案,向下走。

YCOJ-DFS_第6张图片


 


现在只有一个方向走到终点,方案数+1,返回。因为所有能走的点都标记了,结束DFS。
YCOJ-DFS_第7张图片

 
所以图的DFS的操作:
  1. 是找到一个点
  2. 搜索它的所有方向的点
  3. 如果点能走,就在他身上继续DFS(递推

所以说DFS是一种算法,它也有很多种,如抽象的DFS,无向图的DFS等等,读者们就自己去钻研了吧。

 

 

你可能感兴趣的:(YCOJ-DFS)