编辑代码

import time

num = 0
Matrix = [[0 for _ in range(100)] for _ in range(100)]

def chessBoard(tr, tc, dr, dc, size):
    global num, Matrix

    if size == 1:
        return

    s = size // 2  # 分割棋盘
    num += 1  # L型骨牌号
    t = num

    if dr < tr + s and dc < tc + s:  # 覆盖左上角子棋盘
        # 特殊方格在此棋盘中
        chessBoard(tr, tc, dr, dc, s)
    else:  # 此棋盘中无特殊方格
        # 用t号L型骨牌覆盖右下角
        Matrix[tr + s - 1][tc + s - 1] = t
        # 覆盖其余方格
        chessBoard(tr, tc, tr + s - 1, tc + s - 1, s)

    if dr < tr + s and dc >= tc + s:  # 覆盖右上角子棋盘
        # 特殊方格在此棋盘中
        chessBoard(tr, tc + s, dr, dc, s)
    else:  # 此棋盘中无特殊方格
        # 用t号L型骨牌覆盖左下角
        Matrix[tr + s - 1][tc + s] = t
        # 覆盖其余方格
        chessBoard(tr, tc + s, tr + s - 1, tc + s, s)

    if dr >= tr + s and dc < tc + s:  # 覆盖左下角子棋盘
        # 特殊方格在此棋盘中
        chessBoard(tr + s, tc, dr, dc, s)
    else:
        # 用t号L型骨牌覆盖右上角
        Matrix[tr + s][tc + s - 1] = t
        # 覆盖其余方格
        chessBoard(tr + s, tc, tr + s, tc + s - 1, s)

    if dr >= tr + s and dc >= tc + s:  # 覆盖右下角子棋盘
        # 特殊方格在此棋盘中
        chessBoard(tr + s, tc + s, dr, dc, s)
    else:
        # 用t号L型骨牌覆盖左上角
        Matrix[tr + s][tc + s] = t
        # 覆盖其余方格
        chessBoard(tr + s, tc + s, tr + s, tc + s, s)

def main():
    global num, Matrix

    size = int(input("请输入棋盘的行列数(需为2的次方): "))
    row, col = map(int, input("请输入0号方格的(行,列)并用空格分隔开: ").split())

    start = time.time()  # 记录起始时间

    chessBoard(0, 0, row, col, size)

    end = time.time()  # 记录结束时间

    cpu_time_used = end - start  # 计算程序运行时间

    print("程序运行时间: {:.6f} 秒".format(cpu_time_used))

    for r in range(size):
        for c in range(size):
            print("{:2d} ".format(Matrix[r][c]), end="")
        print()

if __name__ == "__main__":
    main()