锁定老帖子 主题:百度面试题(5只蚂蚁走木棍问题)
精华帖 (3) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-06-29
最后修改:2009-07-13
题目描述: 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()); } }
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-07-10
“当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。“
其实你可以当作它们擦肩而过。 所以,最长时间应该是 最左短端的蚂蚁一直往右走 和 最右短端的蚂蚁一直往左走 两个时间的最大值。(不考虑别的蚂蚁,一直走就对了) 最小时间应该是 左边的3个蚂蚁往左走,右边的2个蚂蚁往右走 花的时间。 你可以试试。 |
|
返回顶楼 | |
发表时间:2009-07-11
chirking 写道 “当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。“
其实你可以当作它们擦肩而过。 换种角度思考效果就不一样了 |
|
返回顶楼 | |
发表时间:2009-07-11
这道 百度(搜到的)面试题 可以用来发现把简单问题搞得 n 复杂的人。
|
|
返回顶楼 | |
发表时间:2009-07-13
最后修改: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])); } |
|
返回顶楼 | |
发表时间:2009-09-14
“当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。“
其实你可以当作它们擦肩而过。 这方法太有爱了 |
|
返回顶楼 | |
发表时间:2009-09-15
chirking 写道 “当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。“
其实你可以当作它们擦肩而过。 所以,最长时间应该是 最左短端的蚂蚁一直往右走 和 最右短端的蚂蚁一直往左走 两个时间的最大值。(不考虑别的蚂蚁,一直走就对了) 最小时间应该是 左边的3个蚂蚁往左走,右边的2个蚂蚁往右走 花的时间。 你可以试试。 这个回答很强大 |
|
返回顶楼 | |
发表时间:2009-10-18
chirking 的回答让人能换个角度去考虑问题 不错.
|
|
返回顶楼 | |
发表时间:2009-10-22
这个题也太老了吧!见过N次了!
|
|
返回顶楼 | |
发表时间:2009-12-02
有创新,不错!
|
|
返回顶楼 | |