假设你有一个由2D矩阵表示的地牢。您有一个起点S(x1,y1)和一个终点E(x2,y2)。在此过程中,一些细胞中有一个数字,从您的健康评分中减去。其他细胞是你无法通过的障碍。你从5个健康点开始,你需要找到从S到E的最短路径,你不会在途中死亡。
我知道Dijikstra习惯于找到最短的路径。但在这种情况下,最短路径可能是您沿途死亡的路径。你怎么找到你不死的最短路径?请注意,只要你最后还活着,就没有优势来完成具有更多健康点的比赛。
答案 0 :(得分:1)
这类问题的标准方法有时被称为“图层分层”。你制作原始图形的5个副本(在这种情况下编号为0到4),在图形 n 中获得 v 中的椎骨意味着到达原始图形中的相应顶点 n 死亡后的图表。
如果原始图形中的边缘花费你的生命,那么它将每个图形中的顶点 i 连接到图形 i + 1 中的顶点,否则它像原始图像一样连接图形的相同版本中的顶点。
构建此图后,使用Dijkstra算法找到任意层中终端顶点的最短路径。
答案 1 :(得分:0)