回溯法--八皇后问题

前端之家收集整理的这篇文章主要介绍了回溯法--八皇后问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
def queene(n):
    #生成一个一维数组,下标存储行,值存储列
    helpQueene([-1]*n,n)
 helpQueene(columnPositions,rowIndex,n):
    global count
    回溯标志,即N个皇后都找到了相应的位置
    if rowIndex == n:
        计算总共有多少种
        count+=1
        打印输出
        printSolution(columnPositions,n)
        return
    0-7共8列
    for column in range(n):
        rowIndex的值先从0开始,相当于(rowIndex,column)是一个皇后的坐标,共(0,0)...(7,7)
        columnPositions[rowIndex]=column
        放置一个就判断是否有效,如果有效,就到下一行放置
        if isValid(columnPositions,rowIndex):
            helpQueene(columnPositions,rowIndex+1,n)
            
rowIndex:目前放置的行数,遍历这几行皇后的坐标
    for i  range(rowIndex):
        如果位于同一列,则返回False
        if columnPositions[i] == columnPositions[rowIndex]:
            return False
        如果位于对角线上,就返回False
        elif abs(columnPositions[i]-columnPositions[rowIndex])==(rowIndex-i):
             False
    否则返回True
     True
 printSolution(columnPositions,1)">for row  range(n):
        line=""
         range(n):
            if columnPositions[row]==column:
                line+="Q "
            else:
                line+='_ '
        print(line)
    print(\n")

queene(8)
print(count)

部分输出

 最后有:92种

猜你在找的Python相关文章