n皇后问题
n*n棋盘放n个棋子,要求每行每列每条对角线都只有一个棋子。
输出可行的方案数。
import java.util.Scanner;
public class lanqiao1 {
static int res;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt(); //n*n棋盘,n个皇后
int []arr = new int[n]; //下标为行,值为列
dfs(arr,n,0);
System.out.println(res);
}
private static void dfs(int[] arr,int n ,int row) {
if(row == n){
res++;
return;
}
for(int col=0;col<n;col++){
boolean ok=true;
// 检验这个皇后是否和之前已经放置的皇后有冲突
for(int i=0;i<row;i++){
if(arr[i] == col || arr[i]+i == row