'''zgn946

17:17 2022/5/15'''


#输入

n, m = map(int, input().split())

#存储矩阵

bfs = [list(map(int, input().split())) for _ in range(n)]

i, j = 0, 0  # 此时的坐标

ans = []  # 走过的数

ff = [[1, 0], [0, 1], [-1, 0], [0, -1]] # 下,右,上,左,题目要求的顺序,据题目而定

flag = 0  # 选择哪个方向走


while True:

    #都走过了,就退出

    if i < 0 or j < 0 or i > n - 1 or j > m - 1 or bfs[i][j] == -1: 

        break

    

    #有没走过的,继续往下

    ans.append(bfs[i][j])  # 将数放入到列表中

    bfs[i][j] = -1  # 置-1 ,标记走过的路

    

    i, j = i + ff[flag][0], j + ff[flag][1]# 沿着当前方向前进一步

    if i < 0 or j < 0 or i > n - 1 or j > m - 1 or bfs[i][j] == -1:  # 当下一步走出界或走过时

        i, j = i - ff[flag][0], j - ff[flag][1]  # 回退一步

        flag = (flag + 1) % 4  # 转换方向


        i, j = i + ff[flag][0], j + ff[flag][1]  # 前进一步


print(" ".join(map(str,ans))) # 输出结果


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论