5/30/2014

29. N-Queens II

public class Solution {
    int res=0;
    public int totalNQueens(int n) {
        if (n<=0) return res;
        int[] loc = new int[n];
        dfs(loc, 0, n);
        return res;
    }
   
    public void dfs(int[] loc, int cur, int n) {
        if (cur==n) {
            res++;
            return;
        }
       
        for (int i=0; i<n; i++) {
            loc[cur] = i;
            if (isValid(loc, cur)) dfs(loc, cur+1, n);
        }
    }
   
    public boolean isValid(int[] loc, int cur) {
        for (int i=0; i<cur; i++) {
            if (loc[cur]==loc[i] || Math.abs(loc[cur]-loc[i])==cur-i) return false;
        }
        return true;
    }
}

1 条评论: