/** * 用一个一维数组表示 * 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++ÿ