You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
835 B
35 lines
835 B
n = 8
|
|
|
|
def generateBoard():
|
|
board = list()
|
|
for i in range(n):
|
|
row[queens[i]] = "Q"
|
|
board.append("".join(row))
|
|
row[queens[i]] = "."
|
|
return board
|
|
|
|
def backtrack(row: int):
|
|
if row == n:
|
|
board = generateBoard()
|
|
solutions.append(board)
|
|
else:
|
|
for i in range(n):
|
|
if i in columns or row - i in diagonal1 or row + i in diagonal2:
|
|
continue
|
|
queens[row] = i
|
|
columns.add(i)
|
|
diagonal1.add(row - i)
|
|
diagonal2.add(row + i)
|
|
backtrack(row + 1)
|
|
columns.remove(i)
|
|
diagonal1.remove(row - i)
|
|
diagonal2.remove(row + i)
|
|
|
|
solutions = list()
|
|
queens = [-1] * n
|
|
columns = set()
|
|
diagonal1 = set()
|
|
diagonal2 = set()
|
|
row = ["."] * n
|
|
backtrack(0)
|
|
print(solutions) |