要求
1.在8x8的国际象棋上摆放8个皇后;
2.任意两个皇后都不能处于同一行、同一列、或同一斜线;
流程分析
1.第一个皇后先放在第一行第一列;
2.第二个皇后放在第二行第一列,然后判断是否可行,如果不行,则放在第二列,第三列.....依次把所有列都放完,找到一个合适的;
3.继续第三个皇后,还是从第一列开始....
4.直到第八个皇后也能放在不冲突的位置,才算是找到了一个正解;
5.然后回头继续放第一个皇后,将其放在第二列,然后循环上面的步骤;
说明:理论上我们应该创建一个二维数组来表示棋盘,但实际上可以通过算法,用一个一维数组即可解决问题;例如我们一种解法arr[8]={0,4,7,5,2,6,1,3},arr的下标对应的是第几行(也就是第几个皇后),即arr[0]=0也就是第一个皇后在第一行的第一列;
代码实现
/**
*
* @Author:Strine
* 使用递归回溯算法解决八皇后问题