八皇后问题

八皇后问题是以国际象棋为背景的问题:有八个皇后(可以当成八个棋子),如何在 8*8 的棋盘

中放置八个皇后,使得任意两个皇后都不在同一条横线、纵线或者斜线上。

思路

回溯算法的典型体现

代码

def check(board, row, col):

i = 0

#判断条件

for i in range(row):

if abs(board[i]-col) == 0 or abs(board[i]-col) == abs(i-row):

return False

return True

def eightqueen(board, row):

border = len(board)

#终止条件

if row >= border:

for i,col in enumerate(board):

print('□ ' * col + '■ ' + '□ ' * (len(board) - 1 - col))

print("")

#标记条件

col = 0

while col < border:

for col in range(border):

if check(board, row, col):

board[row] = col

eightqueen(board, row+1)

col += 1

board = [0 for i in range(4)]

#棋盘

eightqueen(board, 0)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值