搜索(3)

本文介绍了使用深度优先搜索(DFS)解决经典问题——八皇后问题,阐述了问题的背景、解决方案及代码实现。此外,还讨论了一种含有滑动限制的路径问题,同样通过DFS寻找满足条件的解。

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

例2 八皇后问题

 八皇后问题用一句话来描述,就是:找到所有在8*8的国际象棋棋盘上放置8枚皇后棋子并且满足任意两枚皇后不会互相攻击的方案
 我们先来看一下国际象棋的棋盘:

image

 棋盘是由8×8等于64个方格组成。棋子是放在方格中的,而不是像中国象棋或者围棋那样放在横线和纵线的交叉点上。上图中的棋子就是皇后,如果有其他棋子与皇后在同一行、同一列或者同一对角线(包含两个方向的对角线)上,都会被皇后攻击到。也就是上图中黑点表示出的位置

 8皇后的要求是在棋盘上放置8枚皇后,并且互相不能攻击到。因为要求不能攻击到就意味着每一行和每一列都至多有一枚皇后,所以在棋盘上放置8枚皇后已经是皇后数量的上限

 下面这张图展示了8皇后问题的一个解:

image

 八皇后是这样一类的问题的典型:我们要解决一个问题,需要若干个步骤。每一个步骤都需要我们从若干个决策或者说是方向中选择一个来执行。一个步骤的选择结果会影响之后的步骤能做哪些决策。经过若干步骤之后,我们会到达一个终结状态。终结状态可能是成功解决了问题,那么我们发现了问题的一个解;也可能是没有解决问题,但是后面无路可走了,那么说明说我们之前做的决策有错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数学家是我理想

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值