代码:
public class queue { //棋盘大小及皇后数量 static int max=8; //正解的集合 下标为行 值为列 static int[] array=new int[max]; public static void main(String[] args) { queue q = new queue(); //从0位置开始 q.check(0); } private void check(int n){ if (n==max){ print(); return; } for (int i = 0; i < max; i++) { //从0列开始测试位置是否合适 array[n]=i; if (judge(n)){ //位置不合适就递归判断下一个 check(n+1); } } } private boolean judge(int n){ //判断此行的皇后和之前行的皇后是否有冲突 for (int i = 0; i < n; i++) { //判断列和斜线 行递增不需要判断 if (array[n]==array[i]||Math.abs(n-i)==Math.abs(array[n]-array[i])){ return false; } } return true; } //输出结果 private void print(){ for (int i = 0; i < array.length; i++) { System.out.print(array[i]+" "); } System.out.println(); } }