回溯法--八皇后问题

这一生的挚爱 提交于 2019-12-05 10:01:26
def queene(n):
    helpQueene([-1]*n,0,n)
def helpQueene(columnPositions,rowIndex,n):
    global count
    if rowIndex == n:
        count+=1
        printSolution(columnPositions,n)
        return
    for column in range(n):
        columnPositions[rowIndex]=column
        if isValid(columnPositions,rowIndex):
            helpQueene(columnPositions,rowIndex+1,n)
def isValid(columnPositions,rowIndex):
    for i in range(rowIndex):
        if columnPositions[i] == columnPositions[rowIndex]:
            return False
        elif abs(columnPositions[i]-columnPositions[rowIndex])==(rowIndex-i):
            return False
    return True
def printSolution(columnPositions,n):
    for row in range(n):
        line=""
        for column in range(n):
            if columnPositions[row]==column:
                line+="Q "
            else:
                line+='_ '
        print(line)
    print("\n")

queene(8)
print(count)

八皇后

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!