Почему мой код поиска решения N-Queens с помощью BackTracking не дает мне правильного ответа? - PullRequest
0 голосов
/ 04 ноября 2019

Это простой код поиска решения 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...