试题 基础练习 回形取数
题目
资源限制
时间限制: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
解答
Python源代码:
"""
Author: CharlesWYQ Time: 2021/3/6 11:55
Name: BASIC-25 VIP试题 回形取数
"""
def my_print(my_mat):
_m = len(my_mat)
_n = len(my_mat[0])
max_print = _m * _n
num = 0
for l in range(_m):
num += 1
print(my_mat[l][0], end=' ')
for b in range(1, _n):
num += 1
print(my_mat[-1][b], end=' ')
for r in list(range(_m - 1))[::-1]:
num += 1
if num > max_print:
return 1
print(my_mat[r][-1], end=' ')
for t in list(range(1, _n - 1))[::-1]:
num += 1
if num > max_print:
return 1
print(my_mat[0][t], end=' ')
if _m >= 3 and _n >= 3:
new_list = []
for i in range(1, _m-1):
new_list.append(my_mat[i][1:_n-1])
my_print(new_list)
else:
return 1
m, n = map(int, input().split())
list0 = []
for i in range(m):
list0.append(list(map(int, input().split())))
my_print(list0)
欢迎交流!