蓝桥杯-回形取数

简介: 蓝桥杯-回形取数

题目描述


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


输入描述


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


输出描述


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


输入输出样例


1. 3 3
2. 1 2 3
3. 4 5 6
4. 7 8 9
1 4 7 8 9 6 3 2 5

运行限制


  • 最大运行时间:1s
  • 最大运行内存: 128M


1. dir = [(1,0),(0,1),(-1,0),(0,-1)]
2. m, n=map(int,input().split())
3. s=[]
4. #m,n=int(m),int(n)
5. for i in range(m):
6.   s.append(input().split())
7. sum=0
8. x,y=-1,0
9. d=0
10. while sum < m*n:
11. sum=sum+1
12.   dx,dy=x+dir[d][0],y+dir[d][1]
13. if dx<0 or dx>=m or dy<0 or dy>=n or s[dx][dy]==-1:
14.     d=(d+1)%4
15.     x,y=x+dir[d][0],y+dir[d][1]
16. else:
17.     x=dx
18.     y=dy
19.   print(s[x][y],end=' ')
20.   s[x][y]=-1
目录
相关文章
|
9月前
|
Java C++ Python
试题 基础练习 回形取数
试题 基础练习 回形取数
40 0
|
7月前
|
人工智能
【洛谷】P2440 木材加工
洛谷 P2440 木材加工
119 0
【洛谷】P2440 木材加工
leetcode-每日一题731. 我的日程安排表 II
题目需要我们判断在重复的预定时间里,有三重预定的返回false,那我们可以定义一个pair结构体用来表示时间段,MyCalendarTwo结构体用来存成功预定的时间段booked切片,和有重复预定的时间段overlaps切片,overlaps切片用来判断新进的时间段是否跟overlaps有重合预定的情况,若有则返回false,没有则true
132 0
leetcode-每日一题731. 我的日程安排表 II
leetcode-每日一题729. 我的日程安排表 I
我们把安排成功的日程插入到日历切片里,Book方法只需要遍历日历切片,如果存在时间交叉的日程则直接返回 false, 没有则将日程插入到日历切片当中,返回true
84 0
leetcode-每日一题729. 我的日程安排表 I
|
存储 测试技术
LeetCode每日一题——729. 我的日程安排表 I
实现一个 MyCalendar 类来存放你的日程安排。如果要添加的日程安排不会造成 重复预订 ,则可以存储这个新的日程安排。
127 0
|
算法
每日一题冲刺大厂第二十一天 木材加工
大家好,我是泡泡,给大家带来每日一题的目的是为了更好的练习算法,我们的每日一题为了让大家练到各种各样的题目,熟悉各种题型,一年以后,蜕变成为一个不一样的自己!
99 0
|
人工智能
洛谷 P1005 矩阵取数游戏
题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的${n}\times{m}$的矩阵,矩阵中的每个元素${a}{_i}{_j}$均为非负整数。游戏规则如下: 1.每次取数时须从每行各取走一个元素,共n个。
1039 0