美文网首页源码与文档分享
基于C++实现的N皇后问题

基于C++实现的N皇后问题

作者: UlricaLee | 来源:发表于2019-08-04 15:14 被阅读0次

一、使用说明

1.1 项目简介

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

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

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

1.2 项目要求

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

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

点击下载源码

相关文章

  • 基于C++实现的N皇后问题

    一、使用说明 1.1 项目简介 八皇后问题是一个古老而著名的问题,是回溯算法的经典问题。该问题是十九世纪著名的数学...

  • 使用C++实现的N皇后问题

    一、项目简介 八皇后问题是一个古老而著名的问题,是回溯算法的经典问题。该问题是十九世纪著名的数学家高斯在1850年...

  • [源码和文档分享]基于C++实现的N皇后问题

    1 项目简介 八皇后问题是一个古老而著名的问题,是回溯算法的经典问题。该问题是十九世纪著名的数学家高斯在1850年...

  • 2019-02-23 N皇后算法

    C++实现N皇后问题 程序中一开始通过设置sizeOfBoard规定方形棋盘的大小 程序使用了vector类创建了...

  • n皇后问题

    问题描述 国际象棋n×n的棋盘上摆放n个皇后,使得两两之间不在同一行,同一列和同一对角线 C++实现

  • 基于C语言实现的N皇后问题

    1 项目简介 八皇后问题是一个古老而著名的问题,是回溯算法的经典问题。该问题是十九世纪著名的数学家高斯在1850年...

  • 并发实现n皇后问题

    前言 最近在用Go并发实现n皇后问题中遇到很多的坑,在此进行记录。 n后问题以及单线程实现 n后问题:简单来说就是...

  • N皇后问题(Java实现)

    问题描述在国际象棋中,皇后的移动方式为横竖交叉的,因此在任意一个皇后所在位置的水平、竖直、以及45度斜线上都不能出...

  • 回溯之N皇后

    N皇后问题:在 n x n 的棋盘上放置 N 个皇后,使其不能相互攻击。 1. 问题分析 皇后相互攻击是指:在皇后...

  • 风云的ARTS打卡(第四周)

    第4周 Algorithm: N皇后问题 n皇后问题研究的是如何将n个皇后放置在n×n的棋盘上,并且使皇后彼此之间...

网友评论

    本文标题:基于C++实现的N皇后问题

    本文链接:https://www.haomeiwen.com/subject/hakydctx.html