首页 > 代码库 > 编程之美---蚂蚁爬杆
编程之美---蚂蚁爬杆
一根长27cm的木棍上,在5个点上有5只蚂蚁,蚂蚁在开始的时候朝任意方向出发,只能掉头或者往前走。让任意两只蚂蚁碰头时,它们同时掉头朝反方向走。假设蚂蚁的速度都是一秒一厘米,求蚂蚁都离开木棍的最短时间和最长时间。
蚂蚁相遇后掉头往反向走,可以看作蚂蚁相遇后,擦肩而过,相当于两只蚂蚁互换了各自的行程。所以把每只蚂蚁离自己较远的一端,和较近的一端计算出来,分别取最大值,就是最长时间和最短时间。
扩展问题 参考网址 http://blog.csdn.net/weichaohnu/article/details/8748138
1、第i个蚂蚁,什么时候走出木杆?
可以想象成每只蚂蚁背着一袋粮食,蚂蚁相遇后,相互交换自己的粮食,蚂蚁仍掉头。假设刚开始有m只蚂蚁往右走,n-m只蚂蚁往左走,则最后一定有m只蚂蚁从右边出来,n-m只蚂蚁从左边出来。且从右边出来的的m只蚂蚁一定是靠近最右边的m只蚂蚁。因此只要找到第i个蚂蚁背的粮食就可以了。如果第i<=m,那么只要找到最开始往右走的第i袋粮食即可。
2、如果蚂蚁在一个平面上运动,同样也是碰头后原路返回(这样和弹性碰撞不同,不能等同于两个蚂蚁交换继续前进),问蚂蚁如何走出平面?
3、蚂蚁一共会碰撞几次?
编程之美---蚂蚁爬杆
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。