深度优先搜索及其优化

深度优先搜索(DFS)是一种常用的搜索算法,常用于解决迷宫、n皇后等问题。在搜索过程中,从未访问的节点开始,沿着路径一直深入,直至无法继续,再回溯寻找其他路径。在八皇后问题中,利用DFS可以找到所有解决方案。通过添加剪枝策略,可以在搜索过程中减少无用计算,提高效率。对于一些复杂问题,剪枝优化是关键,能有效降低算法复杂度和运行时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

深度优先搜索(DFS)是最常用的搜索算法之一,俗称一条路走到黑。

在一般的搜索题中如果不是卡数据点的题目一般都可以直接用深搜来做,深搜也可以用某些题目的骗分【挑眉

在进行搜索的时候,选择一个没有被搜过的结点,按照深度优先,一直往该结点的后续路径结点进行访问,直到该路径的最后一个结点,然后再从未被访问的邻结点进行深度优先搜索,重复以上过程,直至所有点都被访问,搜索结束。【搬百度qwq

深搜对于解决迷宫、n皇后问题很舒服,比如给出下面一个迷宫

001

011

000

其中1代表障碍物,0代表可通行的路。对于这个迷宫图来说,我们要从左上角走到右下角用深搜的话,若先由(1,1)向右走,走到(1,2)后往右(1,3)是障碍物,不可行,往下走(2,2)也是障碍物,而上方没有路,所以就要回溯到(1,1),此时,(1,2)方向的路已经走完了,从(1,1)就只剩了往下的一条路。这样说是不是很好理解?

那么我们来看一下最经典的八皇后的问题。八皇后是一个很老的题了,貌似是19世纪提出的,对于八皇后问题用数学来解答那就很爽了【滑稽】不过我们一个深搜全搞定( •̀ ω •́ )

https://www.luogu.org/problemnew/show/P1219

这是洛谷上的n皇后问题,不过这n不能太大,不然你懂的。

题目中说每一个皇后攻击范围是她所在的行、列和对角线。

偷来洛谷的图( ̄▽ ̄)

我们来看这样一个规律,其余的皇后我们不看,现在假设只有(5,3)这个点上的皇后

那么意味着整个第五行和第三列以及她的对角线都在她的攻击范围内。行和列很好表示,那么对角线怎么弄呢?

这时候我们仔细观察,(5,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值