From 7ae6409ecaac46aeabf29d79a2b49fb424cc612f Mon Sep 17 00:00:00 2001 From: Sayak Rana <72291718+Sayak-Rana@users.noreply.github.com> Date: Tue, 10 Oct 2023 23:31:15 +0530 Subject: [PATCH] Create n_queen_prob.cpp N Queen Problem --- n_queen_prob.cpp | 80 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 n_queen_prob.cpp diff --git a/n_queen_prob.cpp b/n_queen_prob.cpp new file mode 100644 index 00000000..1d3828a5 --- /dev/null +++ b/n_queen_prob.cpp @@ -0,0 +1,80 @@ +#include +#include + +using namespace std; + +bool isSafe(vector>& board, int row, int col, int n) { + // Check if there is a queen in the same column + for (int i = 0; i < row; ++i) { + if (board[i][col] == 1) { + return false; + } + } + + // Check upper-left diagonal + for (int i = row, j = col; i >= 0 && j >= 0; --i, --j) { + if (board[i][j] == 1) { + return false; + } + } + + // Check upper-right diagonal + for (int i = row, j = col; i >= 0 && j < n; --i, ++j) { + if (board[i][j] == 1) { + return false; + } + } + + return true; +} + +bool solveNQueens(vector>& board, int row, int n) { + if (row == n) { + // All queens have been placed successfully + return true; + } + + for (int col = 0; col < n; ++col) { + if (isSafe(board, row, col, n)) { + board[row][col] = 1; // Place the queen + + if (solveNQueens(board, row + 1, n)) { + return true; + } + + board[row][col] = 0; // Backtrack if no solution found + } + } + + return false; // No safe placement in this row +} + +void printBoard(vector>& board, int n) { + for (int i = 0; i < n; ++i) { + for (int j = 0; j < n; ++j) { + if (board[i][j] == 1) { + cout << "Q "; + } else { + cout << ". "; + } + } + cout << endl; + } +} + +int main() { + int n; + cout << "Enter the value of N for N-Queens: "; + cin >> n; + + vector> board(n, vector(n, 0)); + + if (solveNQueens(board, 0, n)) { + cout << "Solution exists. Here is the board:\n"; + printBoard(board, n); + } else { + cout << "No solution exists for N = " << n << endl; + } + + return 0; +}