python递归-八皇后

参考:www.bilibili.com/video/BV1E4…

实现

queenNum = 8
queenList = [0] * 8
resolveCount = 0


# 从第一个皇后开始放,列表的下表就是第i+1个皇后,值就是列
def check(n=0):
    if n == queenNum:
        global resolveCount
        resolveCount += 1
        print_list()
        return
    # 列
    for i in range(queenNum):
        queenList[n] = i
        if judge(n):
            check(n + 1)


# 判断第n个皇后是否和前n - 1个冲突
def judge(n):
    for i in range(n):
        if queenList[i] == queenList[n] or abs(n - i) == abs(queenList[n] - queenList[i]):
            return False
    return True


def print_list():
    for i in range(8):
        print(queenList[i], end=",")
    print()


check(0)
print(resolveCount)