问题描述
回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。
输入格式
输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。
输出格式
输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。
本文转载:基础练习24- 回形取数(python答案)_chenxiangrong的博客-CSDN博客_回形取数python
解法原理请看;:蓝桥杯练习——回形取数_sariman的博客-CSDN博客_蓝桥杯回形取数
在原作者基础上做了一单小的更改。
import math
m,n=list(map(int,input().split()))
l=[list(map(int,input().split()))for i in range(m)]
c=math.ceil(min(m,n)/2)##确定循环的圈数
for i in range(c):
if i==c-1 and (min(m,n)+1)%2==0:##确定是否是最后一圈
if m<n:
for j in range(i,n-i):##横向取数
print(l[i][j],end=' ')
else:
for j in range(i,m-i):##纵向取数
print(l[j][i],end=' ')
else:##环形取数
for j in range(i,m-i):
print(l[j][i],end=' ')
for j in range(i+1,n-i):
print(l[m-1-i][j],end=' ')
for j in range(m-2-i,i-1,-1):
print(l[j][n-1-i],end=' ')
for j in range(n-2-i,i,-1):
print(l[i][j],end=' ')
结果: