sunrise085 发表于 2020-4-2 18:17:07

快马加鞭未下鞍 发表于 2020-4-2 18:02
这个为什么可以这样算啊,真的神奇

这是逻辑问题
解题思路是这样的,
想象着每次都向着target走,走到第k次的时候,一共走了m步,还没到target,
第k+1次,走了n(n=m+k+1)步,就走过了,走过了就要向回走,
看看和target差几步,l=n-target,
若l是偶数,则可以有b=l/2,这时候,想象着前面走第b次的时候,不向前走而是向后走,
那样的话,第k+1次所走的总步数就是n-2*b,这就刚好到达target了。
若l不是偶数,那就再向前走一次,直到总步数与target的差值为偶数,再走一次或者两次肯定会有结果。

你可以看看,我写的两个版本,第一个从第一次走就开始循环,时间比较长;第二个版本直接算出k然后向后进行循环的,耗时比较少

快马加鞭未下鞍 发表于 2020-4-2 18:48:58

sunrise085 发表于 2020-4-2 18:17
这是逻辑问题
解题思路是这样的,
想象着每次都向着target走,走到第k次的时候,一共走了m步,还没到 ...

谢谢了,终于明白了,思路真的很重要啊
页: 1 2 [3]
查看完整版本: Python:每日一题 364