爬杆专题

4.7 蚂蚁爬杆问题

1. 前言 本文的一些图片, 资料 截取自编程之美 2. 问题描述 3. 问题分析 根据问题, 绘制一张状态图 : 解法一 : 模拟每一只蚂蚁的运动, 并以 各个蚂蚁的单位移动量需要的时间的最小公倍数 为周期检测所有的蚂蚁的情况, 检测碰撞, 统计每一只蚂蚁离开竹竿的时间, 最后的结果中找出最大, 最小值即为所求 解法二 : 将两只蚂蚁的碰撞 假想为两只蚂蚁的擦肩而过 那

编程之美4.7蚂蚁爬杆扩展问题附猎人抓狐狸(必胜策略)

4.7节讲的是一根长27cm的木棍上,在5个点上有5只蚂蚁,蚂蚁在开始的时候朝任意方向出发,只能掉头或者往前走。让任意两只蚂蚁碰头时,它们同时掉头朝反方向走。假设蚂蚁的速度都是一秒一厘米,求蚂蚁都离开木棍的最短时间和最长时间。     穷举很麻烦,书上的思路非常精巧,即把蚂蚁碰头后掉头走,看做两个蚂蚁相遇后擦肩而过。这样就可以把蚂蚁的运动看做是独立的,是否碰头并不重要。代码也很简单,不过