当青训营遇上码上掘金
题目—主题 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)
}
思路
这段程序的思路是:
- 当 N 和 K 不相等时,如果 K 大于 N,那么小青可以使用公交车
- 如果K是偶数,就除以2,如果K是奇数,就加1,步数加1
- 如果N大于K,就让N加1,步数加1。
- 当 N 和 K 相等时,循环结束,最后输出步数。
这样小青就可以告诉小码,他最快到达小码家的时间了。
小青的旅途充满了期待和激动,他沿着这条直线走着,有时候步行,有时候坐公交,追寻着与小码相聚的梦想。如李清照所说:“花自飘零水自流。一种相思,两处闲愁。此情无计可消除,才下眉头,却上心头。”
小青和小码的友谊如此美好,相聚是多么的甜蜜。让我们一起祝福他们,愿他们永远幸福。