示例输入为2,2,2
示例结果应该为:
2 2 3 3
2 0 1 3
4 1 1 5
4 4 5 5
但此代码的输出为:
2 2 3 3
2 0 2 3
4 3 4 5
4 4 5 5
应该如何修改?
def chessBoard(tr, tc, dr, dc, size):
global board, t
if size == 1:
return
t += 1
s = size // 2
if dr < tr + s and dc < tc + s:#左上
chessBoard(tr, tc, dr, dc, s)
else:
board[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:
board[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:
board[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:
board[tr + s][tc + s] = t
chessBoard(tr + s, tc + s, tr + s, tc + s, s)
k = int(input("请输入 k 的值:"))
dr = int(input("请输入 dr 的值:"))
dc = int(input("请输入 dc 的值:"))
size = 2 ** k
tr = 0
tc = 0
t = 0
board = [[0] * size for _ in range(size)]
chessBoard(0, 0, dr-1, dc-1, size)
for r in range(size):
for c in range(size):
print("%2d " % board[r][c], end='')
print()