1. 题目来源
链接:52. N皇后 II
2. 题目解析
前导题:
这个和上一道题有啥区别呢?甚至这个题目更加简化了,连原图像都不用建立,直接返回方案数即可。那就是一个 dfs
求方案数问题了,dfs
自己就可以返回方案数。
时间复杂度:
O
(
n
!
)
O(n!)
O(n!)
空间复杂度:
O
(
n
)
O(n)
O(n)
代码:
class Solution {
public:
int n;
vector<bool> col, dg, udg;
int totalNQueens(int _n) {
n = _n;
col = vector<bool>(n);
dg = udg = vector<bool>(2 * n);
return dfs(0);
}
int dfs(int u) {
if (u == n) return 1;
int res = 0;
for (int i = 0; i < n; i ++ ) {
if (!col[i] && !dg[i + u] && !udg[i - u + n]) {
col[i] = dg[i + u] = udg[i - u + n] = true;
res += dfs(u + 1);
col[i] = dg[i + u] = udg[i - u + n] = false;
}
}
return res;
}
};