import java.util.*; import java.io.*; import java.math.*; public class Hello { public static int n; public static int[] x; public static int sum=0; public static void main(String[] args) throws IOException { n =8; x =new int[n+1]; BackTrack(1); System.out.println(sum); } public static void BackTrack(int k){ //k代表第K个皇后,在第K行的第X[k]列 if(k>n) sum++; else{ for(int i=1;i<=n;i++){ x[k] = i; //先试探第k行的皇后放在i位置。 if(isValid(k)) BackTrack(k+1); } } } public static boolean isValid(int t){ //验证第t行的x[t]位置皇后是否可以放置 for(int j=1;j<t;j++){ if( Math.abs( t-j ) == Math.abs(x[t] - x[j]) || x[t]==x[j] ) return false; } return true; } }