300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 机器人走迷宫(python解法)

机器人走迷宫(python解法)

时间:2018-10-09 21:19:46

相关推荐

机器人走迷宫(python解法)

一、题目

二、解题思路

首先是对自己的一个思路描述,首先只是想判断四周是否为存在0,然后不断顺着0的位置一路走下去,当出现四周没有1时,在从原本的位置倒退一格,但是发现这样的结果会忽略很多条路径,因此最终看来很多的相关的题目,总结出了自己的方法

正确解法:

归结到底这还是一个深度算法的题,我们要模拟出每一条路径,从四个方向不断尝试向前前进,如果能走我们就将该位置存储最终路径,不能走我们不断回退,同时删除存入的路径。最终代码如下

代码

data = []path_sum = [] # 所有的路径len_path = [] # 路径的长度统计# 输入n, m = input().split()n, m = int(n), int(m)for i in range(n):data.append(input(f'请输入第{i + 1}行的数据:').split())def outOfRange(i, j, path_one):"""判断是否超出范围或者撞墙:return:"""if i == n or i == -1 or j == m or j == -1: # 判断是否超出围墙passelse:# 前路可走,并且不走回头路if data[i][j] == '0' and path_one.count([i, j]) == 0:walk(i, j, path_one)def judgment_executable(i, j, path_one):"""进行发散:return:"""path_one.append([i, j])if i == n - 1 and j == m - 1: # 到达终点data[n - 1][m - 1] = '0' # 终点重新设为可走# 变为元组存入总数据path_sum.append(tuple(path_one))# 删除最后一个,进行发散path_one.pop()else:outOfRange(i + 1, j, path_one) # 下outOfRange(i, j - 1, path_one) # 左outOfRange(i - 1, j, path_one) # 上outOfRange(i, j + 1, path_one) # 右path_one.pop() # 删除无路可走的位置# 不停前进def walk(i, j, path_one):judgment_executable(i, j, path_one)walk(0, 0, []) # 开始行走# 输出for i in path_sum:for j in i:print(f'{tuple(j)}->' if j != [n - 1, m - 1] else tuple(j), end='')print(f'\tStep={len(i) - 1}')len_path.append(len(i) - 1) # 存入所有路径的所有大小print(max(len_path) - min(len_path))```。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。