概述
- 什么是八皇后问题?
- 八皇后问题的难点是什么?
- 如何实现?-源码
背景
如何能够在8×8的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上
难点有哪些
递归回溯法
所谓递归回溯,本质上是一种枚举法。这种方法从棋盘的第一行开始尝试摆放第一个皇后,摆放成功后,递归一层,再遵循规则在棋盘第二行来摆放第二个皇后。如果当前位置无法摆放,则向右移动一格再次尝试,如果摆放成功,则继续递归一层,摆放第三个皇后……
1 | private static boolean settleQueen(int r){ |
如何判断某个格子的斜线上是否已经存在Queen
同一条斜线上的元素的索引的和相等,或者同一条斜线上的元素的索引的差相等
1 | private static boolean check(int i, int j){ |