八皇后问题

来源:互联网 发布:有知投资管理有限公司 编辑:程序博客网 时间:2024/06/15 05:33
import java.util.*;public class Solution {     public int totalNQueens(int n) {            ArrayList<Integer> path = new ArrayList<>();        int result = 0;        result =  dfs(n,result,path,0);        return result;    }    public static int dfs(int n,int result,ArrayList<Integer> path,int j){        if(j==n){            ++result;            return result;        }        for(int i=0;i<n;i++){            path.add(i);            if(Check(path,j)) result = dfs(n,result,path,j+1);            path.remove(path.size()-1);        }         return result ;    }    public static boolean Check(ArrayList<Integer> path,int j){        for(int i=0;i<j;i++){            if(path.get(i) == path.get(j) || Math.abs(i-j)==Math.abs(path.get(i)- path.get(j)))                return false;        }        return true;    }}