移动迷宫游戏(最短路径算法)

在上一章的移动迷宫小游戏中,我们用回溯法帮骑士在迷宫中找到了通往出口的一条通路,但是骑士并不满意,他又提出了更高的需求。

《移动迷宫》升级版游戏简介:迷宫只有一个入口和一个出口,骑士从入口走进迷宫,现在需要你找一条通往出口最短的路线,将行走路线告诉骑士。

设计思路

寻找最短路线这样的问题,学完了图存储结构之后,最先会将它和最短路径联系到一起。

最短路径通常指的是路径的权值最小,但在本节的问题中,骑士只想走最少的路达到出口,因此我们要找的是一条从入口到出口、途径地最少的路径。

解决本节的问题,仍然可以用迪杰斯塔拉算法或者弗洛伊德算法,也可以用广度优先搜索算法。

迪杰斯塔拉算法查找最短路线

迪杰斯塔拉算法是在网结构中查找最短路径,所以需要先将迷宫转换成无向网(骑士在迷宫中可以任意方向行走)。

迷宫转换成无向网

假设移动迷宫如图 1 所示:

移动迷宫

图 1 移动迷宫

提示:S 为入口,E 为出口,# 为墙壁,- 为通路。

存储图 1 中的迷宫,首先会想到用二维数组存储。数据结构中,无向网也可以用二维数组存储。

将迷宫转换成无向网的具体方法是:迷宫中的各个位置

本文是转载文章,点击查看原文
如有侵权,请联系 lx@jishuguiji.net 删除。