def solve_n_queens(n):
def is_safe(board, row, col):
for i in range(col):
if board[i] == row or board[i] - i == row - col or board[i] + i == row + col:
return False
return True
def place_queen(board, col):
if col == n:
print_board(board)
return
for row in range(n):
if is_safe(board, row, col):
board[col] = row
place_queen(board, col + 1)
def print_board(board):
for row in range(n):
line = ["Q" if board[col] == row else "." for col in range(n)]
print(" ".join(line))
print()
board = [-1] * n
place_queen(board, 0)
n = 4
solve_n_queens(n)