基础练习 回形取数
时间限制:1.0s 内存限制:512.0MB
问题描述 回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。输入格式 输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。输出格式 输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。样例输入3 3
1 2 3
4 5 6
7 8 9样例输出1 4 7 8 9 6 3 2 5样例输入3 2
1 2
3 4
5 6样例输出1 3 5 6 4 2
left_min = 0
right_max = 0
up_min = 0
down_max = 0
def down(arr, l):
global left_min
if left_min == right_max or up_min == down_max:
return
for j in range(up_min, down_max):
print(arr[j][l], end=" ")
left_min += 1
right(arr, down_max - 1)
def right(arr, h):
global down_max
if left_min == right_max or up_min == down_max:
return
for j in range(left_min, right_max):
print(arr[h][j], end=" ")
down_max -= 1
up(arr, right_max - 1)
def up(arr, l):
global right_max
if left_min == right_max or up_min == down_max:
return
for j in range(down_max - 1, up_min - 1, -1):
print(arr[j][l], end=" ")
right_max -= 1
left(arr, up_min)
def left(arr, h):
global up_min
if left_min == right_max or up_min == down_max:
return
for j in range(right_max - 1, left_min - 1, -1):
print(arr[h][j], end=" ")
up_min += 1
down(arr, left_min)
if __name__ == "__main__":
h, l = [int(i) for i in input().split()]
right_max = l
down_max = h
arr = [[int(i) for i in input().split()] for _ in range(h)]
down(arr, 0)