题解
使用偏移量dx, dy来控制走动方向,碰壁就换向
python3代码
n, m = list(map(int, input().split()))
ans = [[None for j in range(m)] for i in range(n)]
dx = [0,1,0,-1]
dy = [1,0,-1,0]
edge = 0
x = 0
y = -1
for i in range(n * m):
temp_x = x + dx[edge]
temp_y = y + dy[edge]
if temp_x < 0 or temp_x >= n or temp_y < 0 or temp_y >= m or ans[temp_x][temp_y]:
edge = (edge+1) % 4
x += dx[edge]
y += dy[edge]
ans[x][y] = i + 1
for i in range(n):
for j in range(m):
print(ans[i][j], end=' ')
print('')