Leetcode-52.N皇后II

这题让返回总共解法数,与上题一样,直接改为统计个数就行了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
class Solution {
public:
int totalNQueens(int n) {
vector<bool> col(n,false);
vector<bool> ll(2*n-1,false);
vector<bool> rr(2*n-1,false);
_col=&col;
_ll=&ll;
_rr=&rr;
int row=0;
total=0;
totaln(n,row);
return total;
}
void totaln(int n,int row)
{
int j;
if(row==n)
{
total++;
return ;
}
int i=row;
for(j=0;j!=n;j++)
{
if((*_col)[j]==true||(*_ll)[i+j]==true||(*_rr)[i-j+n-1]==true)
continue;
(*_col)[j]=true;
(*_ll)[i+j]=true;
(*_rr)[i-j+n-1]=true;
totaln(n,row+1);
(*_col)[j]=false;
(*_ll)[i+j]=false;
(*_rr)[i-j+n-1]=false;
}
return;
}
private:
vector<bool>* _col=nullptr;
vector<bool>* _ll=nullptr;
vector<bool>* _rr=nullptr;
int total;
};