python迷宫起点终点所有路径_通向终点的路不止一条!python迷宫。

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

本帖最后由 wei_Y 于 2014-11-24 19:53 编辑

2008121223547917.jpg (56.62 KB, 下载次数: 3)

2014-11-17 19:22 上传

其实木有上面那么高端啦。。只是数字版。。

规则:

迷宫没有墙壁,但是每条边的路被坑包围。如果一个玩家掉在坑里的话,他们就丢失了。迷宫是用矩阵来表示(含有列表的列表): 1是坑,0的路径的一部分。 迷宫的大小是12×12,外界都是坑。玩家在点(1,1)开始。出口是在点(10,10)。 你需要找到通过迷宫的路径。 玩家只能通过四个方向移动 南(下 [1,0]),北(上 [-1,0]), 东(右[0,1]),西(左[0,-1])。这条路线被描述成由不同的字符组成的字符串:“S”=南,“N”=北,“E”=东,和“W”=西。复制代码

迷宫:

One:

360截图20141117195541691.jpg (12.09 KB, 下载次数: 0)

2014-11-17 19:55 上传

[[1,1,1,1,1,1,1,1,1,1,1,1],

[1,0,0,0,0,0,0,0,0,0,0,1],

[1,0,1,1,1,1,1,1,0,1,1,1],

[1,0,1,0,0,0,0,0,0,0,0,1],

[1,0,1,0,1,1,1,1,1,1,0,1],

[1,0,1,0,1,0,0,0,0,0,0,1],

[1,0,0,0,1,1,0,1,1,1,0,1],

[1,0,1,0,0,0,0,1,0,1,1,1],

[1,0,1,1,0,1,0,0,0,0,0,1],

[1,0,1,0,0,1,1,1,1,1,0,1],

[1,0,0,0,1,1,0,0,0,0,0,1],

[1,1,1,1,1,1,1,1,1,1,1,1],

]

Two:

360截图20141117195840922.jpg (11.23 KB, 下载次数: 0)

2014-11-17 19:58 上传

[

[1,1,1,1,1,1,1,1,1,1,1,1],

[1,0,1,0,0,0,1,0,0,0,0,1],

[1,0,1,0,1,0,1,0,1,1,0,1],

[1,0,1,0,1,0,1,0,1,0,0,1],

[1,0,1,0,1,0,1,0,1,0,1,1],

[1,0,1,0,1,0,1,0,1,0,0,1],

[1,0,1,0,1,0,1,0,1,1,0,1],

[1,0,1,0,1,0,1,0,1,0,0,1],

[1,0,1,0,1,0,1,0,1,0,1,1],

[1,0,1,0,1,0,1,0,1,0,0,1],

[1,0,0,0,1,0,0,0,1,1,0,1],

[1,1,1,1,1,1,1,1,1,1,1,1],

]

three:

360截图20141117200007714.jpg (12.67 KB, 下载次数: 0)

2014-11-17 20:00 上传

[

[1,1,1,1,1,1,1,1,1,1,1,1],

[1,0,0,0,1,0,0,0,1,0,0,1],

[1,0,1,0,0,0,1,0,0,0,1,1],

[1,0,0,0,1,0,0,0,1,0,0,1],

[1,0,1,0,0,0,1,0,0,0,1,1],

[1,0,0,0,1,0,0,0,1,0,0,1],

[1,0,1,0,0,0,1,0,0,0,1,1],

[1,0,0,0,1,0,0,0,1,0,0,1],

[1,0,1,0,0,0,1,0,0,0,1,1],

[1,0,0,0,1,0,0,0,1,0,0,1],

[1,0,1,0,0,0,1,0,0,0,0,1],

[1,1,1,1,1,1,1,1,1,1,1,1],

]

Four:

360截图20141117200155873.jpg (11.79 KB, 下载次数: 0)

2014-11-17 20:02 上传

[

[1,1,1,1,1,1,1,1,1,1,1,1],

[1,0,0,0,1,0,0,0,1,0,0,1],

[1,0,1,0,0,0,1,0,0,0,1,1],

[1,0,0,0,1,0,0,0,1,0,0,1],

[1,0,1,0,0,0,1,0,0,0,1,1],

[1,0,0,0,1,0,0,0,1,0,0,1],

[1,0,1,0,0,0,1,0,0,0,1,1],

[1,0,0,0,1,0,0,0,1,0,0,1],

[1,0,1,0,0,0,1,0,0,0,1,1],

[1,0,0,0,1,0,0,0,1,0,0,1],

[1,0,1,0,0,0,1,0,0,0,0,1],

[1,1,1,1,1,1,1,1,1,1,1,1],

]

Five:

360截图20141117200440791.jpg (13.82 KB, 下载次数: 0)

2014-11-17 20:05 上传

[

[1,1,1,1,1,1,1,1,1,1,1,1],

[1,0,0,0,1,0,0,0,1,0,0,1],

[1,0,1,0,0,0,1,0,0,0,1,1],

[1,0,0,0,1,0,0,0,1,0,0,1],

[1,0,1,0,0,0,1,0,0,0,1,1],

[1,0,0,0,1,0,0,0,1,0,0,1],

[1,0,1,0,0,0,1,0,0,0,1,1],

[1,0,0,0,1,0,0,0,1,0,0,1],

[1,0,1,0,0,0,1,0,0,0,1,1],

[1,0,0,0,1,0,0,0,1,0,0,1],

[1,0,1,0,0,0,1,0,0,0,0,1],

[1,1,1,1,1,1,1,1,1,1,1,1],

]

测试代码:

def check_route(func, labyrinth):

MOVE = {"S": (1, 0), "N": (-1, 0), "W": (0, -1), "E": (0, 1)}

#copy maze

route = func([row[:] for row in labyrinth])

pos = (1, 1)

goal = (10, 10)

for i, d in enumerate(route):

move = MOVE.get(d, None)

if not move:

print("Wrong symbol in route")

return False

pos = pos[0] + move[0], pos[1] + move[1]

if pos == goal:

return True

if labyrinth[pos[0]][pos[1]] == 1:

print("Player in the pit")

return False

print("Player did not reach exit")

return False复制代码

带上写的函数和迷宫列表:

360截图20141117200620783.jpg (14.2 KB, 下载次数: 0)

2014-11-17 20:06 上传

嘻嘻,能不能写粗来呢,各位试试吧。

我写的太菜了不贴上来丢人了。

大神写的:

游客,如果您要查看本帖隐藏内容请回复

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,针对您的问题,我可以为您提供以下Python代码示例,用于解决迷宫问题并找到所有路径: ```python def find_path(maze, x, y, path): # 获取迷宫的行数和列数 rows = len(maze) cols = len(maze[0]) # 判断当前位置是否越界或者已经在路径中 if x < 0 or x >= rows or y < 0 or y >= cols or maze[x][y] == '#' or (x, y) in path: return False # 将当前位置加入路径中 path.append((x, y)) # 如果已经到达终点,则输出路径 if maze[x][y] == 'E': print(path) return True # 向上、下、左、右四个方向进行递归查找 if find_path(maze, x-1, y, path): return True if find_path(maze, x+1, y, path): return True if find_path(maze, x, y-1, path): return True if find_path(maze, x, y+1, path): return True # 如果四个方向都没有找到路径,则回溯 path.pop() return False # 测试代码 if __name__ == '__main__': maze = [ ['#', '#', '#', '#', '#', '#', '#', '#', '#', '#'], ['#', '.', '.', '.', '#', '.', '.', '.', '.', '#'], ['#', '.', '#', '.', '#', '.', '#', '#', '.', '#'], ['#', '.', '#', '.', '.', '.', '.', '.', '.', '#'], ['#', '.', '#', '#', '#', '.', '#', '#', '.', '#'], ['#', '.', '.', '.', '#', '.', '.', '.', '.', '#'], ['#', '#', '#', '.', '#', '#', '#', '#', '.', '#'], ['#', '.', '.', '.', '.', '.', '.', '.', '.', '#'], ['#', '#', '#', '#', '#', '#', '#', '#', '#', '#'] ] find_path(maze, 1, 1, []) ``` 在上述代码中, `maze` 表示迷宫,其中 `#` 表示障碍物,`.` 表示可到达的空格, `S` 表示起点, `E` 表示终点。`find_path` 函数用于查找从起点终点的所有路径,并输出这些路径。 希望这个代码示例能够解决您的问题,如果您有任何其他问题,请随时询问!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值