python實現棋盤覆蓋算法

# coding:utf-8

# 定義數組寬度爲2的幾次方
k = 2
# 棋盤寬度
size1 = pow(2, k)
# L形塊的初始值
mark = 0
# table初始化
table = [[-1 for x in range(size1)] for y in range(size1)]


def chess(tr, tc, pr, pc, size):
    global mark
    global table
    if size == 1:
        return
    mark += 1
    count = mark
    half = size // 2
    if pr < tr + half and pc < tc + half:
        chess(tr, tc, pr, pc, half)
    else:
        table[tr + half - 1][tc + half - 1] = count
        chess(tr, tc, tr + half - 1, tc + half - 1, half)
    if pr < tr + half and pc >= tc + half:
        chess(tr, tc + half, pr, pc, half)
    else:
        table[tr + half - 1][tc + half] = count
        chess(tr, tc + half, tr + half - 1, tc + half, half)
    if pr >= tr + half and pc < tc + half:
        chess(tr + half, tc, pr, pc, half)
    else:
        table[tr + half][tc + half - 1] = count
        chess(tr + half, tc, tr + half, tc + half - 1, half)
    if pr >= tr + half and pc >= tc + half:
        chess(tr + half, tc + half, pr, pc, half)
    else:
        table[tr + half][tc + half] = count
        chess(tr + half, tc + half, tr + half, tc + half, half)


# 棋盤展示
def show(t):
    n = len(t)
    for i in range(n):
        for j in range(n):
            print "% 4d" % t[i][j],
        print


chess(0, 0, 1, 1, size1)
show(table)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章