算法题解:N皇后问题(JAVA代码)
n皇后是把n个棋子皇后放在n×n棋盘上,这样就不会有两个皇后互相攻击。
例如,下面是4皇后问题的解决方案。
设计一个算法,输出在4*4的棋盘上,4皇后问题的解决方案。
算法分析
回溯算法(Backtracking Algorithm)解决N皇后问题
算法思想是把皇后(Queen)一个接一个地放在不同的列中,从最左边的列开始。当我们把一个皇后放在一列中时,我们会检查是否与已经放置的皇后发生冲突。在当前列中,如果找到没有冲突的行,则将此行和列标记为解决方案的一部分。如果由于冲突而找不到这样的行,那么我们将回溯并返回false。
- 从最左边的列开始
- 如果所有的Queen都已经放置,则返回true
- 在当前列中,尝试遍历所有的行进行检查。在每一行的尝试中,按照下面的内容进行判断
3-1)如果Q