题目链接:52. N皇后 II

题解:

同样是N皇后,比上一题更加简单。

题目简述:

N皇后问题,问最后的方案数!

题解:

具体思路详见上一题 51题!

由于问方案数,我们就不必开数组去存储路径了。

在递归出口i == n时, 直接进行统计即可res++.

AC代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution {
public:
vector<bool> col, dg, udg;
int res;
int totalNQueens(int n) {
col = vector<bool>(n);
dg = udg = vector<bool>(n * 2);
dfs(0, n);
return res;
}
void dfs(int i, int n){
if(i == n){
res ++; return;
}
for(int j = 0; j < n; j++){
if(!col[j] && !dg[i + j] && !udg[i - j + n]){
col[j] = dg[i + j] = udg[i - j + n] = true;
dfs(i + 1, n);
col[j] = dg[i + j] = udg[i - j + n] = false;
}
}
}
};