def solve_nqueens(n=8, board=None, col=0): if board is None: board = [[0] * n for _ in range(n)] if col == n: print("\n".join(" ".join("Q" if c else "-" for c in row) for row in board) + "\n") return for row in range(n): if all(board[i][col] == 0 and (col - (row - i) < 0 or board[i][col - (row - i)] == 0) and (col + (row - i) >= n or board[i][col + (row - i)] == 0) for i in range(row)): board[row][col] = 1 solve_nqueens(n, [r[:] for r in board], col + 1) board[row][col] = 0 solve_nqueens()