棋盘覆盖问题
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)
结果显示