基于C语言实现的N皇后问题
2019-07-18 22:29
169 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_38438768/article/details/96470660
1 项目简介
八皇后问题是一个古老而著名的问题,是回溯算法的经典问题。该问题是十九世纪著名的数学家高斯在1850年提出的:在8*8的国际象棋棋盘上,安放8个皇后,要求没有一个皇后能够“吃掉”任何其它一个皇后,即任意两个皇后不能处于同一行,同一列或者同一条对角线上,求解有多少种摆法。
高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法得到结论,有92中摆法。
本实验拓展了N皇后问题,即皇后个数由用户输入。
2 项目功能要求
八皇后在棋盘上分布的各种可能的格局数目非常大,约等于2的32次方种,但是,可以将一些明显不满足问题要求的格局排除掉。由于任意两个皇后不能同行,即每行只能放置一个皇后,因此将第i个皇后放在第i航上,这样在放置第i个皇后时,只要考虑它与前i-1个皇后处于不同列和不同对角线位置上即可。
解决这个问题采用回溯法,首先将第一个皇后放置在第一行第一列,然后,依次在下一行上放置一个皇后,直到八个皇后全部放置安全。在放置每个皇后时,都依次兑每一列进行检测,首先检测放在第一列是否与已放置的皇后冲突,如不冲突,则将皇后放置在该列,否则,选择改行的下一列进行检测。如整行的八列都冲突,则回到上一行,重新选择位置,依次类推。
源码下载地址:https://www.write-bug.com/article/1792.html
相关文章推荐
- [算法]经典算法8皇后(N皇后)问题的解法,C语言实现
- C语言实现N皇后问题源代码
- C语言实现各大皇后问题
- N 皇后问题C语言实现
- [源码和文档分享]基于C语言实现的最近点对问题
- 基于Las Vegas 和回溯法的皇后问题(C语言描述)
- 八皇后问题,C语言实现,求出第一行第一列有皇后的解
- n皇后问题的两种递归方法C语言实现
- 括号匹配问题 栈的应用 C语言实现
- O(NlgK)问题优先队列实现文件C语言
- 基于C语言的内存池的设计与实现
- 回溯法求解 “n 皇后 问题”——Java 实现
- C语言 指针相关问题--调用函数实现空间动态申请
- C语言,数组实现约瑟夫环问题(两种方法)
- Rob Hess的SIFT算法的C语言实现(基于OpenCV)
- 回溯法求解 “n 皇后 问题”——Java 实现
- Rob Hess的SIFT算法的C语言实现(基于OpenCV)(调通!!!)
- 八皇后问题的进化(1)-最基础的实现
- 【转】基于C语言的内存池的设计与实现
- N皇后问题 - 使用随机爬山法实现其快速解法