参考博客:https://www.cnblogs.com/bigmoyan/p/4521683.html
八皇后问题是一个经典的递归回溯问题,就是在国际象棋8*8的格子里放8个皇后,这些皇后不能在同一行,同一列,同一对角线。
首先从问题中我们就能提炼出判断条件。基于此,写出代码:
public class Main{
private static int n = 8;
private static int total = 0;
private static int[] c = new int[n];
public static boolean is_ok(int row) {
for(int j=0; j!=row; j++) {
if(c[row]==c[j] || row-c[row]==j-c[j] || row+c[row]==j+c[j]) return false;
}
return true;
}
public static void queen(int row) {
if(row==n) total++;
else {
for(int col=0; col!=n; col++) {
c[row] = col;
if(is_ok(row)) {
queen(row+1);
}
}
}
}
public static void main(String[] args) {
queen(0);
System.out.println(total);
}
}