8000 2 · javasharper/leetcode@9e69006 · GitHub
[go: up one dir, main page]

Skip to content

Commit 9e69006

Browse files
committed
2
1 parent 084f64e commit 9e69006

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

N-Queens/N-Queens.cpp

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
class Solution {
2+
public:
3+
vector<vector<string>> solveNQueens(int n) {
4+
// Start typing your C/C++ solution below
5+
// DO NOT write int main() function
6+
7+
string row(n, '.');
8+
vector<string> queens(n, row);
9+
10+
vector<bool> visited_row(n, false);
11+
vector<bool> visited_slope1(2*n, false);
12+
vector<bool> visited_slope2(2*n, false);
13+
vector<vector<bool>> visited;
14+
visited.push_back(visited_row);
15+
visited.push_back(visited_slope1);
16+
visited.push_back(visited_slope2);
17+
18+
vector<vector<string>> result;
19+
20+
generateNQueens(queens, visited, 0, n, result);
21+
return result;
22+
}
23+
24+
void generateNQueens(vector<string>& queens, vector<vector<bool>>& visited,
25+
int row, int n, vector<vector<string>>& result) {
26+
27+
if (row == n) {
28+
result.push_back(queens);
29+
return;
30+
}
31+
32+
for (int col = 0; col < n; col++) {
33+
if (visited[0][col] == false &&
34+
visited[1][row+col] == false &&
35+
visited[2][n-col+row] == false) {
36+
37+
queens[row][col] = 'Q';
38+
visited[0][col] = true;
39+
visited[1][row+col] = true;
40+
visited[2][n-col+row] = true;
41+
42+
generateNQueens(queens, visited, row + 1, n, result);
43+
44+
queens[row][col] = '.';
45+
visited[0][col] = false;
46+
visited[1][row+col] = false;
47+
visited[2][n-col+row] = false;
48+
}
49+
}
50+
}
51+
};

0 commit comments

Comments
 (0)
0