八皇后问题(英文:Eight queens),是由国际象棋棋手马克斯·贝瑟尔于1848年提出的问题,是回溯算法的典型案例。
该问题是在8×8格的国际象棋棋盘上摆放8个皇后,要求没有一个皇后能够吃掉任何其他一个,也就是使其不能互相攻击,即没有两个或两个以上的皇后都不能处于同一行、同一列或同一对角线上,问有多少种摆法,这是做出这个课题的基础。
通过对题意的分析与计算,八皇后问题总体来说可以有三种求解方式,分别为穷举法、递归法、回溯法,而本题中因为皇后的数量较多,因此本课程设计中只采用了递归法和回溯法来解决八皇后问题。递归是一种比较简单且比较古老的算法,而回溯法是递归法的升华,在用来求得该问题的所有解时,要回溯到根,且根结点的所有子树都已被搜索遍历后才结束。但不论用什么方法,最重要的就是先搞清楚哪个位置是合法的放皇后的位置,即要先判断,后放置。
本次设计旨在通过学习各种数据结构及算法的同时,训练对基础知识和基本方法的综合运用及变通能力,增强对算法的理解能力,提高软件设计能力。在实践中培养独立分析问题和解决问题的作风和能力。