756.蛇形矩阵

#题目:输入两个整数n和m,输出一个n行m列的矩阵,将数字 1 到 n*m 按照回字蛇形填充至矩阵中。
#输入:
#3 3
#输出:
# 1 2 3
# 8 9 4
# 7 6 5
n, m = map(int, input().strip().split())
# 以垂直向下为x轴正方向,水平向右为y轴正方向,(dx,dy)组成偏移量,每次改变相当于向右转90度
dx = [0, 1, 0, -1]
dy = [1, 0, -1, 0]
x, y, d = 0, 0, 0
res = [[0 for j in range(m)] for i in range(n)]
for k in range(1, (m*n)+1):
res[x][y]=k
a = x + dx[d]
b = y + dy[d]
if (a < 0 or a >= n or b < 0 or b >= m or res[a][b]): #走到头(res[a][b]表示该点已经走过了,前面4种情况表示越界)
d = (d + 1) % 4 #改变方向
a = x + dx[d]
b = y + dy[d]
x = a
y = b
# 打印出矩阵
for i in range(n):
strs = ''
for j in range(m):
strs += str(res[i][j]) + ' '
print(strs)
