dfs是我第一个接触的算法实质上就是用递归回溯暴力枚举出所有可能。
接下来我将用一个题给大家讲解dfs
假设这是一个二维数组(绿色代表空地,黑色代表障碍物)。我们需要分别给障碍物和空地标记(假设0为空地,1为障碍物。)求总共有几条去出口的路。
我们还需要给走过的空地标记防止他重复走上一个空地,当然入口1必然走过,将走过的空地标记为b,没走过的标记为a。
创建两个数组分别用哈希标记。
思路为先从入口一向右判断是否为障碍物,是否为未走过,符合就可以向右走,不符合的话依次对右下左上判断直到可以走为止。
然后到达入口就会就会记录一次。
然后回溯会上一个点
然后就会变成之后在向左边判断为空并不是障碍物就会进入左边向下判断就变成下面这样
大概思路就是这样采用回溯遍历每一条路线。求出所以的路。
(我是菜鸡大佬们别喷)