def is_safe(board, row, col):
for i in range(row):
if board[i] == col or \
board[i] - i == col - row or \
board[i] + i == col + row:
return False
return True
def solve_n_queens_util(board, row, N, solutions):
if row == N:
solutions.append(board[:])
return
for col in range(N):
if is_safe(board, row, col):
board[row] = col
solve_n_queens_util(board, row + 1, N, solutions)
def solve_n_queens(N):
solutions = []
solve_n_queens_util([0] * N, 0, N, solutions)
return [['.' * col + 'Q' + '.' * (N - col - 1) for col in solution] for solution in solutions]
# Example: Solve the 4-Queens problem
N = 4
solutions = solve_n_queens(N)
for i, solution in enumerate(solutions):
print(f"Solution {i+1}:")
for row in solution:
print(row)
print()