Skip to content

Commit f55a27d

Browse files
committed
3
1 parent 965ad96 commit f55a27d

1 file changed

Lines changed: 14 additions & 19 deletions

File tree

N-QueensII/N-QueensII.cpp

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,22 @@
11
class Solution {
22
public:
3-
int queens;
4-
int mask;
53
int totalNQueens(int n) {
6-
// Start typing your C/C++ solution below
7-
// DO NOT write int main() function
8-
9-
mask = (1 << n) - 1;
10-
queens = 0;
11-
totalNQueensHelper(0, 0, 0);
12-
return queens;
4+
int result = 0;
5+
dfs(result, n, 0, 0, 0);
6+
return result;
137
}
148

15-
void totalNQueensHelper(int col, int ld, int rd) {
16-
if (col != mask) {
17-
int valid_pos = mask & (~(col | ld | rd));
18-
while (valid_pos) {
19-
int p = valid_pos & (-valid_pos);
20-
valid_pos -= p;
21-
totalNQueensHelper(col + p, (ld + p) << 1, (rd + p) >> 1);
9+
void dfs(int& result, int n, int col, int l, int r) {
10+
int mask = (1 << n) - 1;
11+
if (col == mask) {
12+
result++;
13+
} else {
14+
int valid = mask & (~(col | l | r));
15+
while (valid) {
16+
int p = valid & (-valid);
17+
valid -= p;
18+
dfs(result, n, col + p, (l + p) << 1, (r + p) >> 1);
2219
}
2320
}
24-
else
25-
queens += 1;
2621
}
27-
};
22+
};

0 commit comments

Comments
 (0)