八皇后问题是在8*8的棋盘上放置8枚皇后,使得棋盘中每个纵向、横向、左上至右下斜向、右上至左下斜向均只有一枚皇后。八皇后的一个可行解如图所示:
![]() |
|||||||
---|---|---|---|---|---|---|---|
![]() |
|||||||
![]() |
|||||||
![]() |
|||||||
![]() |
|||||||
![]() |
|||||||
![]() |
|||||||
![]() |
思路
对于八皇后的求解可采用回溯算法,从上至下依次在每一行放置皇后,进行搜索,若在某一行的任意一列放置皇后均不能满足要求,则不再向下搜索,而进行回溯,回溯至有其他列可放置皇后的一行,再向下搜索,直到搜索至最后一行,找到可行解,输出。
可以使用递归函数实现上述回溯算法,递归函数用于求解在某一行放置皇后,具体代码如下所示。
代码
1 |
|