Solving the N-Queens Problem
The N-Queens problem is a classic problem in computer science, which involves placing N queens on an NxN chessboard in such a way that no two queens threaten each other. In other words, the goal is to find a configuration in which no two queens share the same row, column, or diagonal.
This problem can be solved using the backtracking technique, which is well-suited for situations where we need to explore all possible solutions by making a series of choices and undoing them when necessary.
To solve the N-Queens problem using backtracking, we start with an empty chessboard and try to place a queen in each column, one by one. We recursively explore all possible placements for the current column and backtrack if we encounter a situation where no queen can be placed without conflicting with the existing queens.
Let's take a look at an example implementation of the N-Queens problem in C++:
xxxxxxxxxx
}
using namespace std;
int main() {
// N: The number of queens
int N;
cout << "Enter the number of queens: ";
cin >> N;
// Create an empty chessboard of size N x N
char board[N][N];
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
board[i][j] = '.';
}
}
// Function to check if a queen can be placed at a given position
auto isSafe = [&](int row, int col) -> bool {
// Check if there is any queen in the same row
for (int i = 0; i < col; i++) {
if (board[row][i] == 'Q')
return false;
}
// Check if there is any queen in the upper diagonal
for (int i = row, j = col; i >= 0 && j >= 0; i--, j--) {
if (board[i][j] == 'Q')
return false;