python深度优先算法 八皇后剪枝_使用深度优先+递归+剪枝解决八皇后问题

n = 4 # 以4皇后举例

result = []

# 放置互斥的列、左斜线、右斜线信息

cols= set()

pie = set()

na = set()

def dfs(row, state):

if row >= n:

result.append(state)

for col in range(n):

if col in cols or row + col in pie or row - col in na:

continue

cols.add(col)

pie.add(row + col)

na.add(row - col)

dfs(row + 1 , state + [col])

cols.remove(col)

pie.remove(row + col)

na.remove(row - col)

def generate_result():

board = []

for data in result:

for i in data:

board.append("." * i + "Q"+"."*(n-i-1))

return [board[i:i+n] for i in range(0,len(board),n)]

dfs(0,[])

print(generate_result())

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值