Это простой код поиска решения N-Queens с помощью BackTracking У меня также есть Java-версия этого кода, и она отлично работает, но версия Python не работает и дает мне неправильный ответ,Пожалуйста, скажите мне, что не так в моем коде!
Функция isValid предназначена только для проверки позиции, и она правильная. Я сократил код. У меня есть Java-версия того же кода, который отлично работает, но не этот.
def isValid(colPlacements):
rowValidating = len(colPlacements)-1
for i in range(rowValidating):
absDist = abs(colPlacements[i] - colPlacements[rowValidating])
rowDist = rowValidating - i
if(absDist == 0 or absDist == rowDist):
return False
return True
def solveNqueens(row, n, colPlacements, results):
if(row==n):
print('solution found')
else:
for col in range(n):
colPlacements.append(col)
if(isValid(colPlacements)):
solveNqueens(row+1, n, colPlacements, results)
colPlacements=colPlacements[:-1]
lst=[]
res=[[]]
print(solveNqueens(0, 4, lst, res))