The n-queens puzzle is the problem of placing n queens on an n x n chessboard such that no two queens attack each other.
Given an integer n, return the number of distinct solutions to the n-queens puzzle.
Input: n = 4
Output: 2
Explanation: There are two distinct solutions to the 4-queens puzzle as shown.
Input: n = 1
Output: 1
From: LeetCode
Link: 52. N-Queens II
To determine if a queen can be placed safely, we need to check three things:
bool isSafe(int board[], int row, int col, int n) {
for (int i = 0; i < col; i++) {
if (board[i] == row ||
board[i] - i == row - col ||
board[i] + i == row + col) {
return false;
}
}
return true;
}
int solveNQueensUtil(int n, int col, int board[]) {
if (col >= n) {
return 1;
}
int count = 0;
for (int i = 0; i < n; i++) {
if (isSafe(board, i, col, n)) {
board[col] = i;
count += solveNQueensUtil(n, col + 1, board);
}
}
return count;
}
int totalNQueens(int n) {
int board[n];
for (int i = 0; i < n; i++) {
board[i] = 0;
}
return solveNQueensUtil(n, 0, board);
}