import java.util.Scanner;
import java.util.prefs.BackingStoreException;
public class Main {
//public static int[][] a;//棋盘
public static int[] b;//存放皇后的位置
public static int sum = 0 ;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
//a = new int [n+1][n+1];
b = new int[n+1];
Backtrack(1,n);
System.out.println(sum);
}
public static boolean canPlace(int row,int col ){//不在同一列,不在同一个斜线上
for(int i = 1 ; i < row ; i++ ){//i -->行
if(b[i]==col||Math.abs((i-row))==Math.abs(col-b[i]))
return false;
}
return true;
}
public static void Backtrack(int row,int n){
if(row > n ){
sum++;
}else{
for(int i = 1 ; i <= n ; i++){//i-->列
if(canPlace(row,i)){
b[row] = i;
Backtrack(row+1, n);
}
}
}
}
}
n后问题
最新推荐文章于 2022-12-20 10:43:12 发布