/**
* 用一个一维数组表示
* arr[7] = 0,1,2,3,4,5,6,7
* arr[i] = val 第i+1个皇后,放在第i+1行,第val列
* 一个一维数组,就表示一组解
*/
public class Queue8 {
int max = 8; // 表示皇后的数量
int[] arr = new int[max];
public static void main(String[] args) {
Queue8 queue8 = new Queue8();
queue8.put(0);
}
// 放置第n-1个皇后的方法
public void put(int n){
// n从0开始,当 n = max = 8 时,表示已经开始放第九个皇后了
// 此时前8个皇后已经放置完成,就输出这个结果后返回
if(n == max){
print();
return;
}
// 如果前8个还没有放置好,就需要递归去判断位置是否冲突
for (int i = 0; i < max; i++) {
// 新放置的皇后,从每行的第一列开始摆放
// 如果不冲突,放置并判断下一个(递归)
arr[n] = i;
if(isRight(n)){
put(n+1);
}
// 如果位置不正确,isRight(n) 返回false
// 就不会进入if语句
// 会继续执行for循环,i++ÿ