八皇后12种解法图_[源码和文档分享]基于C++实现的N皇后问题

八皇后问题是一个经典的回溯算法问题,本项目介绍了如何基于C++实现N皇后问题,允许用户输入皇后数量,并展示了当N=4时的2种解法。详细的操作手册、源码和文档可在指定链接获取。
摘要由CSDN通过智能技术生成

一、使用说明

1.1 项目简介

八皇后问题是一个古老而著名的问题,是回溯算法的经典问题。该问题是十九世纪著名的数学家高斯在1850年提出的:在8*8的国际象棋棋盘上,安放8个皇后,要求没有一个皇后能够“吃掉”任何其它一个皇后,即任意两个皇后不能处于同一行,同一列或者同一条对角线上,求解有多少种摆法。

高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法得到结论,有92种摆法。

本实验拓展了N皇后问题,即皇后个数由用户输入。

1.2 项目要求

八皇后在棋盘上分布的各种可能的格局数目非常大,约等于2的32次方种,但是,可以将一些明显不满足问题要求的格局排除掉。由于任意两个皇后不能同行,即每行只能放置一个皇后,因此将第i个皇后放在第i行上,这样在放置第i个皇后时,只要考虑它与前i-1个皇后处于不同列和不同对角线位置上即可。

解决这个问题采用回溯法,首先将第一个皇后放置在第一行第一列,然后,依次在下一行上放置一个皇后,直到八个皇后全部放置安全。在放置每个皇后时,都依次对每一列进行检测,首先检测放在第一列是否与已放置的皇后冲突,如不冲突,则将皇后放置在该列,否则,选择该行的下一列进行检测。如整行的八列都冲突,则回到上一行,重新选择位置,依此类推。

1.3 操作手册

运行程序后,首先要输入皇后的个数N:

ded1fe9b19d38d17e877882b5e53f1b5.png

5e4924627985362043d93c469f645d22.png

这里输入4为皇后个数后出现该问题的2种解法:

ec194734606ebca2e456448c449168aa.png

5e4924627985362043d93c469f645d22.png

参考文档和完整的文档和源码下载地址:

https://www.write-bug.com/article/1391.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值