我们一般说的最短时间是什么意思。我在编程中遇到一个蚂蚁爬杆相遇问题,说的是求蚂蚁落下杆的最短时间?

2023-05-28 12:46:42 文章来源 :网络 围观 : 评论
后台-系统设置-扩展变量-手机广告位-内容正文顶部

  假设有多个方案,当然先要找出最后落下杆的蚂蚁的时间,才能找出该方案所需的时间(=最后落下杆的蚂蚁时间-开始时间)。然后在所有方案的所需时间中比较,才能找出最短时间。

  实际解决方案如下(转自网络):

  这个问题来自编程之美这本书。

  问题:有一根27厘米的木杆,在第3厘米,7厘米,11厘米,17厘米,23厘米这五个位置上各有一蚂蚁。木杆很细,不能同时通过两个蚂蚁。开始的时候每个蚂蚁的头朝哪边是不确定的,它们只会朝前走或者掉头,但是不会后退。当任意两只蚂蚁碰头的时候,两只蚂蚁会同时调头向相反的方向走。假设蚂蚁们每秒可以走一厘米的距离。编写程序,求所有蚂蚁都离开木杆的最短时间和最长时间‘

  解法一:这也许是大多人会想到的方法(哈哈,我刚开始的时候也这样想的)

  考虑枚举蚂蚁的初始朝向,模拟每一个蚂蚁的运动来解决问题。

  解法二:

  考虑,虽然两只蚂蚁碰头后都掉头往相反的方向,但是,可以看作是是两只蚂蚁相遇后,擦肩而过了(看到这里的时候可能很多人就有一种恍然大悟的感觉了吧)。也就是说可以认为蚂蚁的运动独立的,是否有碰头并不是问题的中重点。

  这样虽然每个蚂蚁的运动轨迹都与原来的不一样了。但是所有的蚂蚁离开木杆的最短的时间和最长时间是不变的。只需要分别计算每个蚂蚁离开木杆的时间,即可求出所有蚂蚁离开木杆的时间了。

  这样,程序只需要遍历所有的蚂蚁,把每个蚂蚁走出木杆的最长时间(蚂蚁朝离自己较远的一端走去),最短时间(蚂蚁朝离自己较近的一端走去)分别求出来,就算出最大值,这两个最大值就是所有蚂蚁离开木杆的最长时间和最短时间。

  

我们一般说的最短时间是什么意思。我在编程中遇到一个蚂蚁爬杆相遇问题,说的是求蚂蚁落下杆的最短时间?

  

我们一般说的最短时间是什么意思。我在编程中遇到一个蚂蚁爬杆相遇问题,说的是求蚂蚁落下杆的最短时间?

  

我们一般说的最短时间是什么意思。我在编程中遇到一个蚂蚁爬杆相遇问题,说的是求蚂蚁落下杆的最短时间?

  

我们一般说的最短时间是什么意思。我在编程中遇到一个蚂蚁爬杆相遇问题,说的是求蚂蚁落下杆的最短时间?

来源:文章来源于网络,如有侵权请联系我们删除。
来源:文章来源于网络,如有侵权请联系我们删除。

相关文章

留言与评论(共有 0 条评论)
   
验证码:
推荐文章