棋盘覆盖问题-python

棋盘覆盖问题

问题描述:棋盘覆盖问题

python 代码

import os
import sys
Board = [[]]
tile = 1
def checkerboard(tr, tc, dr, dc, size):
    '''
    tr: 棋盘第一个格子的横坐标
    tc: 棋盘第一个格子的纵坐标
    dr: 棋盘特殊格子的横坐标
    dc: 棋盘特殊格子的纵坐标
    size: 棋盘大小
    其他:
        Board 大棋盘
        tile 某种L编码
    '''
    if size==1:
        return
    global tile, Board
    tile += 1 
    t = tile
    s = size // 2
    #覆盖左上
    if dr < tr+s and dc < tc+s:
        checkerboard(tr, tc, dr, dc, s)
    else:
        Board[tr+s-1][tc+s-1] = t
        checkerboard(tr, tc, tr+s-1, tc+s-1, s)
    
    #覆盖右上
    if dr < tr+s and dc >= tc+s:
        checkerboard(tr, tc+s, dr, dc, s)
    else:
        Board[tr+s-1][tc+s] = t
        checkerboard(tr, tc+s, tr+s-1, tc+s, s)

    #覆盖坐下
    if dr >= tr+s and dr < tc+s:
        checkerboard(tr+s, tc, dr, dc, s)
    else:
        Board[tr+s][tc+s-1] = t
        checkerboard(tr+s,tc, tr+s, tc+s-1, s)
    
    #覆盖右下
    if dr >= tr+s and dr >= tc+s:
        checkerboard(tr+s, tc+s, dr, dc, s)
    else:
        Board[tr+s][tc+s] = t
        checkerboard(tr+s, tc+s, tr+s, tc+s, s)
if __name__ == "__main__":
    k = 3 
    size = pow(2,k)
    Board = [[0]*size for i in range(size)] 
    checkerboard(0, 0, 0, 1, size)
    for i in Board:
        print(i)
    # pass

结果显示

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/i_laolarou/article/details/108265588