ych——C之八皇后问题(回溯)

本文介绍了如何使用回溯法解决八皇后问题,详细解析了解空间树的构造,并提供了C语言的代码实现。通过对解空间树的深度优先搜索,探讨了皇后在不同位置的布局可能性,同时阐述了判断棋盘位置是否合法的isCorrect函数设计思路。
摘要由CSDN通过智能技术生成

一、算法说明

八皇后问题的描述:在8*8的棋盘内使 8 个皇后棋子无冲突地摆放。在国际象棋中,皇后的移动方式为横竖交叉的,所以在一个皇后的水平、竖直以及45° 的方向上都不能出现皇后。如下图:(使用特殊符号代替皇后)
——————————————————————————————————————————————————————————————————
在这里插入图片描述

二、算法分析

1、这里使用回溯法来解决这个问题,就是确定了解空间树的组织结构后,从开始结点(即根节点)开始,以深度优先的方式对整个解空间树进行搜索。

2、要使用回溯法求解八皇后问题首先要构建一颗解空间树,通过探索这棵解空间树来得到八皇后问题的一个解或多个解。如下图:

在这里插入图片描述

3、该解空间树为第一个皇后在第一个位置的摆法的解空间树,第一个皇后还有 7 中摆法。所以八皇后可以构建 8 棵解空间树。通过探索每棵解空间树,可以探索出第一个皇后布局之后的所有解。

4、通过上图,解空间树的第一个皇后在第一个位置时的结构。可以将第一个皇后看作根节点,该结点可以派生出 8 个结点,每个结点表示了第一个皇后位置不变的情况下第二个皇后可能出现的位置。可以看出第二层中第一个结点的摆放不符合问题的要求,这里以虚线画出,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值