栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

经典面试题【蚂蚁过杆】Golang 代码详解

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

经典面试题【蚂蚁过杆】Golang 代码详解

经典面试题【蚂蚁过杆】Golang 代码详解 面试题库【蚂蚁过杆】

文章目录
  • 经典面试题【蚂蚁过杆】Golang 代码详解
  • 一、常见题目
  • 二、详细思路
    • 1.已知条件
    • 2.详细代码
  • 三、结果
  • 总结


一、常见题目

有一根27厘米的细木杆,在第3厘米、7厘米、11厘米、17厘米、23厘米这五个位置上各有一只蚂蚁。木杆很细,不能同时通过一只蚂蚁。开始时,蚂蚁的头朝左还是朝右是任意的,它们只会朝前走或调头,但不会后退。当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。假设蚂蚁们每秒钟可以走一厘米的距离。

求全部下杆最短时间?

答案: 11

求全部下杆最长时间?

答案: 24

二、详细思路 1.已知条件

从题目中我们得到已知的条件是:

  1. 27厘米长。
  2. 第3厘米、7厘米、11厘米、17厘米、23厘米。
  3. 只能通过一只蚂蚁。
  4. 碰头时,两只蚂蚁会朝反方向走

转换思维

蚂蚁碰头后掉头,可以当作蚂蚁穿过对方,即蚂蚁碰头不损耗时间。
也就是说若 1 2 相遇,则将转头后的 2 视作 1 ,转头后的 1 视作 2.
由于求的是所有蚂蚁的最短最长,不影响蚂蚁之间的编号交换。

时间也就是算出每一只蚂蚁从初始位置直接到离开木杆的场景。

	ganLength := 27                      //杆的长度
	position := [5]int{3, 7, 11, 17, 23} //蚂蚁初始位置
	speed := 1                           //蚂蚁的速度
	maxTime := 0                         //最长时间
	minTime := 0                         //最短时间
2.详细代码

以木杆中心为基准,左边的蚂蚁往左走,右边的蚂蚁往右走,此时即为最短时间。
以木杆中心为基准,左边的蚂蚁往右走,右边的蚂蚁往左走,此时即为最长时间。

package main

import "fmt"

func main() {

	ganLength := 27                      //杆的长度
	position := [5]int{3, 7, 11, 17, 23} //蚂蚁初始位置
	speed := 1                           //蚂蚁的速度
	maxTime := 0                         //最长时间
	minTime := 0                         //最短时间

	for _, v := range position {
		tempMax := 0         //最长时间
		tempMin := 0         //最短时间
		if v < ganLength/2 { //中点左边
			tempMax = (ganLength - v) / speed
			tempMin = v / speed
		} else { //中点右边
			tempMax = v / speed
			tempMin = (ganLength - v) / speed

		}

		// 如果存在更晚的下杆时间,那么全部下杆的最长时间变成最新的值
		if maxTime < tempMax {
			maxTime = tempMax
		}

		// 如果存在更晚的下杆时间,那么全部下杆的最短时间变成最新的值
		if minTime < tempMin {
			minTime = tempMin
		}
	}

	fmt.Println(minTime, maxTime)
}


三、结果

完成,实现简单的智力逻辑题的解析


总结

蚂蚁过杆是一道经典算法面试题,我们可以通过代码来更清晰的了解其中的逻辑,改变我们的思维。

希望这个博客能对你有所益处。我是轻王,我为自己代言。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/989903.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号