dfs(深度优先搜索)师从李熔豪学长

dfs是我第一个接触的算法实质上就是用递归回溯暴力枚举出所有可能。

接下来我将用一个题给大家讲解dfs

cb6744a0d48a4811a4f5bbabc2d3549f.jpg

 假设这是一个二维数组(绿色代表空地,黑色代表障碍物)。我们需要分别给障碍物和空地标记(假设0为空地,1为障碍物。)求总共有几条去出口的路。

我们还需要给走过的空地标记防止他重复走上一个空地,当然入口1必然走过,将走过的空地标记为b,没走过的标记为a。

创建两个数组分别用哈希标记。

7e1b5c687f284040becd2d8b76cfee48.jpg

 

 思路为先从入口一向右判断是否为障碍物,是否为未走过,符合就可以向右走,不符合的话依次对右下左上判断直到可以走为止。

然后到达入口就会就会记录一次。

然后回溯会上一个点0c57a385d40f43bdb5f65f83c3c992ff.jpg

 然后就会变成f463e3234315406fa19d13e720cb93dc.jpg之后在向左边判断为空并不是障碍物就会进入左边向下判断就变成下面这样5e191b14f80247d38e4ed11a670fa03d.jpg

大概思路就是这样采用回溯遍历每一条路线。求出所以的路。

(我是菜鸡大佬们别喷) 

 

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值