`
xshq
  • 浏览: 43043 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

百度面试题(5只蚂蚁走木棍问题)

阅读更多

题目描述:
    有一根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());
	}
}

 

分享到:
评论
12 楼 ronalke 2010-01-07  
“当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。“
其实你可以当作它们擦肩而过。
en,这想法很新颖!
11 楼 photon 2010-01-07  
<div class="quote_title">yaoweijq 写道</div>
<div class="quote_div">
<p><br>在微软技术面试心得上见过,</p>
<p>不知最早出处是哪?</p>
</div>
<p>不知道出处,只记得在高中物理题上见过</p>
10 楼 yaoweijq 2010-01-07  
<p><br>在微软技术面试心得上见过,</p>
<p>不知最早出处是哪?</p>
9 楼 ITliujun 2009-12-02  
有创新,不错!
8 楼 busy12377 2009-10-22  
这个题也太老了吧!见过N次了!
7 楼 xici_magic 2009-10-18  
chirking 的回答让人能换个角度去考虑问题 不错.
6 楼 vieri122 2009-09-15  
chirking 写道
“当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。“
其实你可以当作它们擦肩而过。
所以,最长时间应该是 最左短端的蚂蚁一直往右走 和 最右短端的蚂蚁一直往左走 两个时间的最大值。(不考虑别的蚂蚁,一直走就对了)
最小时间应该是 左边的3个蚂蚁往左走,右边的2个蚂蚁往右走 花的时间。
你可以试试。

这个回答很强大
5 楼 areha001 2009-09-14  
“当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。“
其实你可以当作它们擦肩而过。


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

这思路确实不错!学习
for (int i = 0; i < ants.length; i++) {
	min = Math.max(min, Math.min(ants[i], LONG - ants[i]));
	max = Math.max(max, Math.max(ants[i], LONG - ants[i]));
}
3 楼 night_stalker 2009-07-11  
这道 百度(搜到的)面试题 可以用来发现把简单问题搞得 n 复杂的人。
2 楼 姜太公 2009-07-11  
chirking 写道
“当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。“
其实你可以当作它们擦肩而过。

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

相关推荐

Global site tag (gtag.js) - Google Analytics