Я занимаюсь проблемой N_Queens и думаю, что немного потерял себя в своем коде, используя рекурсию и возврат.
Я пытаюсь решить эту проблему без использования каких-либо функций импорта или продвинутого языка. Я достиг точки, когда я действительно расстроен и был бы признателен за любое решение и комментарии на стороне, чтобы помочь моим знаниям.
global N
N = 8
board = [[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0]]
def printboard(board):
for row in range(N):
for col in range(N):
print(board[row][col], end=' ')
print('')
def SafePosition(board, row, col):
return (board[row][col]==0)
def AddQueen(board, row, col):
K = row+col
L = row-col
for row in range(N):
for col in range(N):
if (row+col == K) or (row==row) or (col==col) or (row-col == L):
board[row][col] = 1
board[row][col] = 2
def findCol(board, col):
for row in range(N):
if(board[col][row] == 0):
return [row]
def SolveNQueens():
findCol(board, col)
if board[row][col] == 0:
AddQueen(board,row,col)
if SafePosition(board,row, col):
board[row][col]= 2
SolveNQueens()
board[row][col] = 0
return
printboard(board)
SolveNQueens()
Во-первых, он говорит, что «Кол» не определено, что меня смущает, во-вторых, я, кажется, не могу выйти из этой текущей ситуации.
В идеале на доске должно быть 2 в каждой точке, где находится Королева.
Пожалуйста, будьте осторожны, я только начал изучать Python3.