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. Similar to Q 28.
回复删除2. int res要在最外面.