defisValid(row, col, queenPos):for i in range(row):
if queenPos[i] == col or abs(queenPos[i] - col) == abs(i - row):
returnFalsereturnTruedefbacktrack(row, queenPos, solutions):if row == 8:
solutions.append(queenPos[:])
returnfor col in range(8):
if isValid(row, col, queenPos):
queenPos[row] = col
backtrack(row + 1, queenPos, solutions)
defsolveNQueens():
queenPos = [0] * 8
solutions = []
backtrack(0, queenPos, solutions)
for solution in solutions:
board = [['.'] * 8for _ in range(8)]
for i in range(8):
board[i][solution[i]] = 'Q'
print('\n'.join([''.join(row) for row in board]))
print()
solveNQueens()