dfs实现。
import java.util.Scanner;
public class nQueen {
static int res;
public static void main(String []args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(); //n*n棋盘,n个皇后
int []arr = new int[n]; //下标代表行,值代表列
dfs(arr,n,0);
System.out.print(res);
}
private static void dfs(int []arr,int n,int row){
if(row == n){
res++;
return;
}
for(int col=0;col<n;col++){
boolean flag = true;
for(int i=0;i<row;i++){
if(arr[i] == col || col+row == arr[i]+i || col-row == arr[i]-i){
flag = false;
}
}
if(flag==true){
arr[row] = col; //选择
dfs(arr,n,row+1);
arr[row] = 0; //撤销选择
}
}
}
}