Java 二维阵列中从(0,0)到达(m-1,n-1)所需的最小可能跳跃

Java 二维阵列中从(0,0)到达(m-1,n-1)所需的最小可能跳跃,java,multidimensional-array,graph-algorithm,dijkstra,shortest-path,Java,Multidimensional Array,Graph Algorithm,Dijkstra,Shortest Path,大小为m X n的二维数组。想象一只猫在第一个槽(0,0)中。数组的元素表示从该插槽可能跳转的最长距离。例如:当前插槽包含3个,cat可以水平或垂直跳转到第三个插槽/第二个插槽/第一个插槽。猫不能斜跳。cat无法降落在包含0的插槽上。猫不能从“0槽”移动到任何地方。我必须编写一个java程序来寻找从(0,0)到(m-1,n-1)的最小可能跳变 我应该使用什么数据结构? 我猜是一个数据结构,它可以存储多条路径,在起始节点和结束节点之间有节点,比如图。 我应该遵循什么算法? 我想像dijkstra的

大小为m X n的二维数组。想象一只猫在第一个槽(0,0)中。数组的元素表示从该插槽可能跳转的最长距离。例如:当前插槽包含3个,cat可以水平或垂直跳转到第三个插槽/第二个插槽/第一个插槽。猫不能斜跳。cat无法降落在包含0的插槽上。猫不能从“0槽”移动到任何地方。我必须编写一个java程序来寻找从(0,0)到(m-1,n-1)的最小可能跳变

我应该使用什么数据结构? 我猜是一个数据结构,它可以存储多条路径,在起始节点和结束节点之间有节点,比如图。 我应该遵循什么算法?
我想像dijkstra的最短路径算法应该根据这个问题进行修改。

根据我从你的问题中得到的信息,你只能水平或垂直移动

“当前插槽包含3个,cat可以水平或垂直跳转到第三个插槽。

因为它不能沿对角线移动,所以最短的路径是任意一条路径。从(1,3)到(2,5)的一种或另一种方式,你仍然会向下移动一次,超过2次,顺序无关紧要

如果你能沿对角线移动,你试过使用毕达哥拉斯定理吗?
a^2+b^2=c^2

//A = amount of vertical jumps, B = amount of horizonal jumps, C = the distance in-between.
//Prior to this, you'd have to know the point you are going to.
从那里,取
c^2
的平方根并去掉小数部分

i、 e.
Math.sqrt(2)=1.414//只需保留1

要保持1,如果有小数点,可以将其设置为向下舍入,这将确保始终获得正确的对角线跳跃次数


这将使您尽可能沿对角线方向跳转,然后用您能做的任何事情(即水平或垂直)完成跳转。

可能重复动态规划,使用回溯我们不能沿对角线方向跳转。我已将问题写得更清楚。请再次阅读并帮助我。