从源到目的地的最小步骤

时间:2017-10-23 10:51:06

标签: algorithm data-structures

我们在x轴上有一条从1到N的路径。在路径上有2个点,即源,S和目的地,D。从源S开始,我们只允许进行2次移动。我们可以向前跳U步或向后跳L步。如果我们处于某个位置p,我们可以在一步中移动到p + U或p-L,只要它们保持在[1,N]范围内。从S到达目的地D所需的最小步数是多少?我们不允许超出边界1和N.

1 个答案:

答案 0 :(得分:0)

所以我们必须制作D-S步骤,并且想要最小的x+y

D - S = x * U - y * L

y = (Ux + S-D) / L

这是数学。因此,我们可以利用问题中的对称性并假设D> S(如果需要的话),U> 0,L> 0

要准确命中D,Ux+S-D % L必须为0(%是模运算符)。

聪明的数学或循环x。

我希望这能让你开始。

我知道,根据数学处理,聪明可能会有所不同。如果他们对待gcd和modulo:

Let g = gcd(U, L)

然后在(D-S) % g != 0时没有解决方案。 例如,你不能用L 2和U 4达到3到6。