N-Queens II
Total Accepted: 4907 Total Submissions: 16210Follow up for N-Queens problem.
Now, instead outputting board configurations, return the total number of distinct solutions.
偷懒了。。。C++速度很快所以又是回溯直接过了,比N-Queens I 还要方便
>.<位运算位运算位运算。。。
class Solution {
int *rec;
bool *row, *l, *r;
public:
int totalNQueens(int n) {
int ans = 0;
row = new bool[n]();
l = new bool[2 * n]();
r = new bool[2 * n]();
dfs(0, n, ans);
delete(row);
delete(l);
delete(r);
return ans;
}
void dfs(int s, int n, int& ans) {
if (s == n) {
++ans;
return;
}
for (int i = 0; i < n; i++) {
if (!row[i] && !l[s + i] && !r[s - i + n - 1]) {
row[i] = true;
l[s + i] = true;
r[s - i + n - 1] = true;
dfs(s + 1, n, ans);
row[i] = false;
l[s + i] = false;
r[s - i + n - 1] = false;
}
}
}
};