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
t = num
if dr < tr + s and dc < tc + s:
chessBoard(tr, tc, dr, dc, s)
else:
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:
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:
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:
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()