n queen

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;
     }
}
原文地址:https://www.cnblogs.com/vector11248/p/8043818.html