1
# -*- coding: utf-8 -*-
def puzzle(rows, cols):
if rows == 0:
return [[]]
else:
return new_queen(rows - 1, cols, puzzle(rows - 1, cols))
def new_queen(new_row, cols, plsd_queens):
new_solutions = []
for solution in plsd_queens:
for new_col in range(cols):
if test(new_row, new_col, solution):
new_solutions.append(solution + [new_col])
return new_solutions
def test(new_row, new_col, solution):
for row in range(new_row):
if solution[row] == new_col or solution[row] + row == new_col + new_row or\
solution[row] - row == new_col - new_row:
return False
return True
안녕하세요! N-queens 퍼즐의 재귀 알고리즘의 고유 솔루션을 어떻게 찾을 수 있습니까? 그것은 단지 모든 솔루션을 찾습니다은 92 개 솔루션이 될 것입니다 보드의 8x8에,하지만 독특한는 12입니다 (다른 솔루션을 번역하고이 12에서 미러링) 나는이 생각N-queens 퍼즐 재귀 알고리즘의 고유 솔루션 찾기
모든 솔루션 세트를 가져와 고유성에 대한 두 가지 솔루션을 비교하십시오. –
모든 해결책을 취한 후 고유성을 다루는 것은 어떻습니까? –
@czarpino, 재미 있고, 어떻게해야합니까? –