回溯法与N皇后问题

N皇后问题要求在N*N棋盘上放置N个皇后,确保它们互不攻击。本文介绍了回溯算法解决此问题的原理,通过遍历解空间树,判断并剪枝,找到所有满足条件的布局。回溯过程中,判断皇后位置是否冲突,若冲突则回溯至上一层继续尝试,直到找到所有符合条件的解。
摘要由CSDN通过智能技术生成

N皇后问题要求求解在N*N的棋盘上放置N个皇后,并使各皇后彼此不受攻击的可能的棋盘布局,皇后彼此不受攻击的所有可能的布局,皇后彼此不受攻击的约束条件是:任何两个皇后均不能在棋盘同一行、同一列或者在对角线上出现。

由于N皇后问题不允许两个皇后在同一行,所以,可用一维数组X表示N皇后问题的解,X[i]表示第i行的皇后所在的列,条件表述如下:

  • X[i] = X[s],则第i行和第s行皇后在同一列上
  • 如果第i行的皇后在第j列,第s行的皇后在第t列,即X[i] = j 和 X[s] = t,则只要i - j = s- t 或者 i + j = s + t,说明两个皇后在对角线上,对两个等式进行变换后,得到结论,只要|i- s| = |j - t|(即|i- s| = |x[i] - x[s]|),则皇后在同一对角线上

解N皇后问题需要遍历解空间树,遍历中要随时判定当前棋盘布局是否满足要求,符合要求则继续向下遍历,直至判断得到一个满足约束条件的叶子结点,从而获得一个满足要求的棋盘布局,不符合要求的结点将被舍弃(称之为剪枝),并回溯到上一层的结点继续遍历,当整棵树遍历结束时,已获得所有满足要求的棋盘布局

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值