-
-
Notifications
You must be signed in to change notification settings - Fork 87
Expand file tree
/
Copy pathN-Queens.cpp
More file actions
51 lines (44 loc) · 1.13 KB
/
N-Queens.cpp
File metadata and controls
51 lines (44 loc) · 1.13 KB
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
46
47
48
49
50
51
class Solution {
public:
bool isSafe(int row,int col,vector<string>&board,int n){
for(int i=col; i>=0; i--){
if(board[row][i]=='Q') return false;
}
int j=col,i=row;
while(i>=0 && j>=0){
if(board[i][j]=='Q') return false;
i--;
j--;
}
i=row,j=col;
while(i<n && j>=0){
if(board[i][j]=='Q') return false;
i++;
j--;
}
return true;
}
void func(int col,vector<string>&board,vector<vector<string>>&ans,int n){
if(col==n){
ans.push_back(board);
return;
}
for(int row=0; row<n; row++){
if(isSafe(row,col,board,n)){
board[row][col]='Q';
func(col+1,board,ans,n);
board[row][col]='.';
}
}
}
int totalNQueens(int n) {
vector<vector<string>> ans;
vector<string> board(n);
string s(n,'.');
for(int i=0; i<n; i++){
board[i]=s;
}
func(0,board,ans,n);
return ans.size();
}
};