Javascript 随您所做的每一步而变化的图表

Javascript 随您所做的每一步而变化的图表,javascript,algorithm,dijkstra,Javascript,Algorithm,Dijkstra,这是我的实习面试任务。我还没有找到答案,希望你能帮助我。(面试大约两周前,我失败了)。 你有带轮子的机器人无人机。您收到的照片从空间转换为矩阵与海平面以上的高度(每个元素是正方形100*100米)。例如: 3 2 1 0 1 2 3 3 2 1 0 1 2 3 3 2 1 0 1 2 3 3 2 1 0 1 2 3 //这是两座山之间的路(0-路,1高,2高,依此类推) 规则:每一步需要消耗1点燃料, 但上升或下降-成本之间的高度差异。例如,如果从4到2,它将是(4-2+1(每一步花费1))

这是我的实习面试任务。我还没有找到答案,希望你能帮助我。(面试大约两周前,我失败了)。 你有带轮子的机器人无人机。您收到的照片从空间转换为矩阵与海平面以上的高度(每个元素是正方形100*100米)。例如:

3 2 1 0 1 2 3
3 2 1 0 1 2 3
3 2 1 0 1 2 3
3 2 1 0 1 2 3 
//这是两座山之间的路(0-路,1高,2高,依此类推)
规则:每一步需要消耗1点燃料, 但上升或下降-成本之间的高度差异。例如,如果从4到2,它将是(4-2+1(每一步花费1))=3 您需要找到从左上角点到右下角点的最短路径。我知道怎么做。 我们可以使用Dijkstra算法,一切都很好

但任务中最难的一点- 每次对角线移动的成本是前一次的两倍。 所以第一个对角线移动需要花费1,第二个2,第三个4,第四个8等等。 我不知道如何创建这个规则,以及如何将它与Dijkstra算法相结合,使它看起来简单,工作良好

如果你有解决方案,请分享


我刚刚读了一本关于算法的书,但这对我没有任何帮助(

在彼此的顶部创建六个曼哈顿图副本。每一个对角线移动都会将你带到一个更高的层上,使用该层计算你使用了多少条对角线。然后你可以再次为每条边指定权重。使用dijkstra找到从(0,0,0)到(6,6,x)的路径。