百度空间 | 百度首页 
 
查看文章
 
5只蚂蚁走木棍问题
2009-10-10 16:46
有一根27厘米的细木杆,在第3厘米、7厘米、11厘米、17厘米、23厘米这五个位置上各有一只蚂蚁。木杆很细,不能同时通过一只蚂蚁。开始时,蚂蚁的头朝左还是朝右是任意的,它们只会朝前走或调头,但不会后退。当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。假设蚂蚁们每秒钟可以走一厘米的距离。编写程序,求所有蚂蚁都离开木杆的最小时间和最大时间。


public class Ant {

private static int LONG = 27;

private int[] a = { 3, 7, 11, 17, 23 };

private int min = 0, max = 0;

public void gogogo() {
for (int i = 0; i < a.length; i++) {
min = Math.max(min, Math.min(a[i], LONG - a[i]));
max = Math.max(max, Math.max(a[i], LONG - a[i]));
}
}

public int getMax() {
return max;
}

public int getMin() {
return min;
}

public static void main(String[] args) {

Ant client = new Ant();
client.gogogo();
System.out.println(client.getMax());
System.out.println(client.getMin());
}
}

“当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。“
其实你可以当作它们擦肩而过。
所以,最长时间应该是 最左短端的蚂蚁一直往右走 和 最右短端的蚂蚁一直往左走 两个时间的最大值。(不考虑别的蚂蚁,一直走就对了)
最小时间应该是 左边的3个蚂蚁往左走,右边的2个蚂蚁往右走 花的时间。

类别:算法 | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu