public class Main{
static int MAXQUEEN=8;//可通过修改此值解决N皇后问题
static int[] arr=new int[MAXQUEEN];//用来保存结果
public static void main(String[] args) {
new Main().check(0);
}
public void check(int n) {//n代表当前是第几个皇后,n的值是0~MAXQUEEN-1
//终止条件:最后一个皇后已经摆完
if(n==MAXQUEEN) {
print();
return;
}
//从第一列开始摆放
for(int i=0;i<MAXQUEEN;i++) {
arr[n]=i;//将0皇后(第一个皇后)摆放到第一列(0列)
if(judge(n))
check(n+1);
}
}
public static void print() {
for(int i=0;i<MAXQUEEN;i++) {
System.out.print(arr[i]+1+" ");
}
System.out.println();
}
public static boolean judge(int n) {//判断是否可以摆放
for(int i=0;i<n;i++) {
if(arr[i]==arr[n] || Math.abs(n-i)==Math.abs(arr[n]-arr[i]))
return false;
}
return true;
}
}
8皇后问题(回溯)
最新推荐文章于 2023-10-04 14:18:53 发布