BSF level
获赞
872
粉丝
10
关注
4
看过 TA
128
西南大学
2014
Python
IP属地:北京
暂未填写个人简介
私信
关注
2021-10-21 21:13
西南大学 Python
while True: try: m, n = list(map(int, input().split())) maze = [] for _ in range(m): maze.append(list(map(int, input().split()))) def walk(i, j, pos=[(0, 0)]): if j+1 < n and maze[i][j+1] == 0: # 向右 if (i, j+1) not in pos: walk(i, j+1, pos + [(i, j+1)]) if j-1 >= 0 and maze[i][j-1] == 0: # 向左 ...
bry716:看了半天终于理解了,刚开始的时候总在想走错的路径怎么不打印,不是已经添加到pos列表了吗?结果仔细一看才发现,代码的判断是if而不是if-else。所以,每次执行函数时,都会对四个方向进行判断,如果四个if都成立,则会产生4个pos列表,则有几个if成立,则有几个新的pos列表,函数就这样把所有的可能路线都跑了一遍。所以函数最终有两个状态,一个是满足最后的打印条件,一个是所有if都不成立,则这个pos就不会打印。又因为题目是唯一解,所以最终只会打印一个唯一正确的pos。如果是最短路径,则可以在最后一个if时,添加一个新的字典,用pos的长度作为key,pos作为value,将字典排序后打印第一个value即可。
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务