喃梦物语


私信TA

用户名:uq_88529018583

访问量:3950

签 名:

艾小鹿? 习之澜?

等  级
排  名 328
经  验 5408
参赛次数 0
文章发表 116
年  龄 0
在职情况 学生
学  校 阳光学院
专  业 数据科学与大数据技术

  自我简介:

'''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 人评分

  评论区

  • «
  • »