public class Queue8 {
int max = 4;
int[] array = new int[max];
int account = 0;
public static void main(String[] args) {
Queue8 queue8 = new Queue8();
queue8.check(0);
System.out.println(queue8.account);
}
//编写一个方法放置第n个皇后
private void check(int n){
if (n == max){ // 已经放置到9个皇后了,前8个皇后就已经放好了
account++;
if (account ==8){
print();
}
return;
}
//依次放入皇后并判断是否冲突
for (int i=0;i<max;i++){//这里标识没行一共有8列
//先把第n个皇后放到该行的第1列
array[n] = i;//把第n个皇后放在第i列
//判断当放置第n个皇后到i列时是否冲突
if (judge(n)){//说明不冲突
//接着放第n+1个皇后
check(n+1);
}
}
}
//查看当我们放置第n个皇后的时候,就去检测该皇后是否和前面已经摆放的皇后冲突
private boolean judge(int n){
for (int i=0;i<n;i++){
if (array[i] == array[n]||Math.abs(n-i) == Math.abs(array[n]-array[i])){//如果第n个皇后和前面的n-1个皇后中的任何一个皇后在同一列或者在同一条直线上,都不行
return false;
}
}
return true;
}
//写一个方法,将皇后摆放的位置打印出来
private void print(){
for (int i=0;i<max;i++){
System.out.print(array[i]+" ");
}
System.out.println();
}
}
n皇后问题
最新推荐文章于 2025-02-25 21:42:43 发布