迷宫中的最短路径

时间:2017-04-14 22:10:35

标签: arrays algorithm dynamic-programming shortest-path

让我们假设我们有一个由m * n char数组表示的迷宫。我们的任务是找到最快的移动顺序,以便将一个滑架从起始位置E转移到完成位置S.

数组的每个元素都具有以下值之一:

S,意思是起始位置

E,意思是结束位置

X,意思是障碍

。 ,意思是我们可以移动的开放空间

T,意思是传送。 每个远程端口都与所有其他远程端口相连。只有马车可以通过传送而不是人自己发送。该男子后来必须转移到一个传送回来。

每次,男人可以向左移动(L),向右移动(R),向下移动(D)或向上移动(U)。当一个人随着马车移动时,每个步骤花费2秒。如果一个人在没有马车的情况下移动,每一步都需要1秒。使用传送系统总共需要2秒钟。

示例:

数组是:

S. 。

。 。 。

是的。 。 Ť

。 。 X E

最佳解决方案是:

向下,向下,向右,向右,向右

时间成本是:

2 + 2 = 4,对于"向下,向下"

2,为了发送带有传送的马车。我们继续没有马车。

1 + 1 + 1 = 3,对于"对,对,对" 。请注意,每个步骤花费1而不是2,因为我们移动没有马车。我们现在再次选择马车。

2 for" Down" 。 2因为我们再次选择了马车。

总费用:4 + 2 + 3 + 2 = 11。

最终答案:向下,向下,向右,向右,向下

With是最适合该任务的算法吗?

到目前为止,我已经考虑过使用动态编程的可能性。虽然这会导致O(m * n)解决方案......

我也考虑过应用某种Dijkstra的可能性,但我需要O(m * n)才能创建图形...

0 个答案:

没有答案