package 二〇一七年三月二十四日;
public class NQueensII {
int[] x;
int N;
int sum =
0;
public int totalNQueens(
int n) {
N = n;
x =
new int[N+
1];
backTrace(
1);
return sum;
}
/**
* col行这个点,x[col]列这个点,与已经存在的几个皇后,是否符合要求,放到这个位置上,
* @param col
* @return
*/
private boolean place(
int col){
for(
int i =
1; i < col; i++){
if(Math.abs(col - i)==Math.abs(x[col]-x[i])||x[col]==x[i]){
return false;
}
}
return true;
}
private void backTrace(
int t) {
if(t>N){
sum++;
}
else {
for(
int j =
1; j <= N; j++) {
x[t] = j ;
if(place(t)){
backTrace(t+
1);
}
}
}
}
public static void main(String[] args) {
NQueensII n =
new NQueensII();
System.out.println(n.totalNQueens(
8));
}
}