龙空技术网

「蓝桥杯」「基础练习VIP」回形取数

残梦哥 67

前言:

今天看官们对“回形算法”大约比较关怀,各位老铁们都想要学习一些“回形算法”的相关知识。那么小编也在网络上收集了一些对于“回形算法””的相关文章,希望姐妹们能喜欢,姐妹们快快来学习一下吧!

题目描述

回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。

输入

输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。

输出

输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。

样例输入

3 31 2 34 5 67 8 9

样例输出

1 4 7 8 9 6 3 2 5

代码的最后多了一个空格没有办法解决,可能自己也有其他的问题,因为我运用了十余个例子都是多出一个空格。(希望有大佬看见可以给些建议[可怜])

代码如下

n,m=map(int,input().split())t=[]for i in range(n):    t.append(list(map(int,input().split())))l=min(n,m)*0.5p=0o=1u=-1r=0for i in range(round(l)):    try:        for j in range(p,n):            print(t[j][p],end=" ")        p+=1        n-=1    except:break    try:        for j in range(o,m):            print(t[n][j],end=" ")        m-=1        o+=1    except:break    try:        for j in range(n-1,u,-1):            print(t[j][m],end=" ")        u+=1    except:break    try:        for j in range(m-1,r,-1):            print(t[r][j],end=" ")        r+=1    except:break

c语言网运行的结果如下

标签: #回形算法 #回型矩阵c