-
问题
在8*8格的国际象棋上摆放8个皇后,使其不能相互攻击,即:任意龙哥皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 -
递归-八皇后问题(回溯算法)
八皇后问题算法思路分析- 第一个皇后先放第一行第一列
- 第二个皇后放在第二行第一列、然后判断是否OK,如果不OK,继续放在第二列、第三列、最多把所有列都放完,直到找到一个合适的
- 继续第三个皇后,还是第一列、第二列…直到第8个皇后也能放在一个不冲突的位置,算是找到了一个正确解
- 当得到一个正确解时,在栈回退到上一个栈时,就会开始回溯。直到最后回退到第一个皇后,得到第一列的所有正确解
- 然后继续把第一个皇后放在第二列,后面继续执行1,2,3的步骤
说明
理论上应该创建一个二维数组来表示棋盘,但是实际上可以用一个一维数组解决问题。arr[8]={0,4,7,5,2,6,1,3},8个数字分别是8个元素的位置减1.
八皇后问题(递归、回溯)
于 2022-07-21 23:36:27 首次发布