Skip to content

Commit

Permalink
Update Day10/N-Queens.cpp
Browse files Browse the repository at this point in the history
  • Loading branch information
muditmahajan21 committed May 23, 2022
1 parent 0b085f0 commit e84ac66
Showing 1 changed file with 36 additions and 0 deletions.
36 changes: 36 additions & 0 deletions Day10/N-Queens.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
void solve(int col, vector<string> &board, vector<vector<string>> &ans, vector<bool> &left_row, vector<bool> &upper_diag, vector<bool> &lower_diag, int n) {
if(col == n) {
ans.push_back(board);
return;
}

for(int row = 0; row < n; row++) {
if(!left_row[row] and !upper_diag[n - 1 + col - row] and !lower_diag[col + row]) {
board[row][col] = 'Q';
left_row[row] = true;
upper_diag[n - 1 + col - row] = true;
lower_diag[col + row] = true;

solve(col + 1, board, ans, left_row, upper_diag, lower_diag, n);

board[row][col] = '.';
left_row[row] = false;
upper_diag[n - 1 + col - row] = false;
lower_diag[col + row] = false;
}
}
}

vector<vector<string>> solveNQueens(int n) {
vector<vector<string>> ans;
vector<string> board(n);
string s(n, '.');

for(int i = 0; i < n; i++) {
board[i] = s;
}

vector<bool> left_row(n, false), upper_diag(2 * n - 1, false), lower_diag(2 * n - 1, false);
solve(0, board, ans, left_row, upper_diag, lower_diag, n);
return ans;
}

0 comments on commit e84ac66

Please sign in to comment.