[数据结构][Python][经典题目]拼盘问题

经典智力问题:如图所示图中有一块角上缺一块方格的国际象棋棋盘,现在我们想用L型砖块拼出这样一块棋盘
在这里插入图片描述
在这里插入图片描述

def cover(board,lab=1,top=0,left=0,side=None):
    if side is None: side=len(board)
    s = side//2
    offsets = (0,-1),(side-1,0)
    for dy_outer,dy_inner in offsets:
        for dx_outer,dx_inner in offsets:
            if not board[top+dy_outer][left+dx_outer]:
                board[top+s+dy_inner][left+s+dx_inner] = lab
    lab +=1
    if s>1:
        for dy in [0,s]:
            for dx in [0,s]:
                lab = cover(board,lab,top+dy,left+dx,s)

    return lab

board = [[0]*8 for i in range(8)]
board[7][7] = -1
result = cover(board)
print(result)
for row in board:
    print((" %2i"*8)% tuple(row))


  3  3  4  4  8  8  9  9
  3  2  2  4  8  7  7  9
  5  2  6  6 10 10  7 11
  5  5  6  1  1 10 11 11
 13 13 14  1 18 18 19 19
 13 12 14 14 18 17 17 19
 15 12 12 16 20 17 21 21
 15 15 16 16 20 20 21 -1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值