当青训营遇上码上掘金

1,342 阅读2分钟

当青训营遇上码上掘金

题目—主题 3:寻友之旅

小青要找小码去玩,他们的家在一条直线上,当前小青在地点 N ,小码在地点 K (0≤N , K≤100 000),并且小码在自己家原地不动等待小青。小青有两种交通方式可选:步行和公交。

步行:小青可以在一分钟内从任意节点 X 移动到节点 X-1 或 X+1 公交:小青可以在一分钟内从任意节点 X 移动到节点 2×X (公交不可以向后走)

请帮助小青通知小码,小青最快到达时间是多久?

输入: 两个整数 N 和 K 输出: 小青到小码家所需的最短时间(以分钟为单位)

解题代码

 package main
 ​
 import "fmt"
 ​
 func main() {
     var N, K int
     fmt.Printn("请分别输入两个地点坐标~")
     fmt.Scan(&N, &K)
     steps := 0
     for N != K {
         if K > N {
             if K%2 == 0 {
                 K /= 2
             } else {
                 K++
             }
             steps++
         } else {
             N++
             steps++
         }
     }
     
     // minute
     fmt.Println(steps)
 }

思路

这段程序的思路是:

  1. 当 N 和 K 不相等时,如果 K 大于 N,那么小青可以使用公交车
  2. 如果K是偶数,就除以2,如果K是奇数,就加1,步数加1
  3. 如果N大于K,就让N加1,步数加1。
  4. 当 N 和 K 相等时,循环结束,最后输出步数。

这样小青就可以告诉小码,他最快到达小码家的时间了。

小青的旅途充满了期待和激动,他沿着这条直线走着,有时候步行,有时候坐公交,追寻着与小码相聚的梦想。如李清照所说:“花自飘零水自流。一种相思,两处闲愁。此情无计可消除,才下眉头,却上心头。”

小青和小码的友谊如此美好,相聚是多么的甜蜜。让我们一起祝福他们,愿他们永远幸福。