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