[python]n皇后问题,输出所有解

该博客主要围绕Python解决n皇后问题展开,重点在于输出此问题的所有解,体现了Python在算法问题求解上的应用,属于后端开发中利用Python进行算法实现的范畴。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import time


count = 0
n = 8
G = []  # the whole graph
r = []  # each row's status
bl = []  # bottom left to top right
br = []  # bottom right to top left


def init():
    global n
    n = int(input("Enter size of the chessboard : "))
    for i in range(n):
        r.append(0)
        G.append([])
        for j in range(n):
            G[i].append(0)
    for i in range(2*n+5):
        bl.append(0)
        br.append(0)


def is_legal(row, col):
    return G[row][col] + r[row] + bl[row+col] + br[row-col+n-1] == 0


def print_matrix():
    global count
    count += 1
    print("Solution : {}".format(count))
    for i in range(n):
        for j in range(n):
            print(G[i][j], end=" ")
        print("")


def set_queen(row, col):
    G[row][col] = 1
    r[row] = 1
    bl[col+row] = 1
    br[n-1+row-col] = 1


def remove_queen(row, col):
    G[row][col] = 0
    r[row] = 0
    bl[col+row] = 0
    br[n-1+row-col] = 0


def dfs(col=0):
    if col >= n:
        print_matrix()
        return
    for row in range(n):
        if is_legal(row, col):
            set_queen(row, col)
            dfs(col+1)
            remove_queen(row, col)


def time_calculate():
    begin = time.perf_counter()
    main()
    end = time.perf_counter()
    return end - begin


def main():
    init()
    dfs()


if __name__ == "__main__":
    print("".join(["Time consumption = ", str(time_calculate()), " seconds"]))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值