百度面试题目-5只蚂蚁
2009-10-21 17:20
337 查看
看到百度一道面试题:
有一根27厘米的细木杆,在第3厘米、7厘米、11厘米、17厘米、23厘米这五个位置上各有一只蚂蚁。木杆很细,不能同时通过一只蚂蚁。开始时,蚂蚁的头朝左还是朝右是任意的,它们只会朝前走或调头,但不会后退。当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。假设蚂蚁们每秒钟可以走一厘米的距离。编写程序,求所有蚂蚁都离开木杆的最小时间和最大时间。
以下是程序实现(java):
class Ant //蚂蚁类
程序运行结果:
0代表向左 1代表向右
方向如下:0 0 0 0 0 花费时间:23
方向如下:0 0 0 0 1 花费时间:17
方向如下:0 0 0 1 0 花费时间:23
方向如下:0 0 0 1 1 花费时间:11
方向如下:0 0 1 0 0 花费时间:23
方向如下:0 0 1 0 1 花费时间:17
方向如下:0 0 1 1 0 花费时间:23
方向如下:0 0 1 1 1 花费时间:16
方向如下:0 1 0 0 0 花费时间:23
方向如下:0 1 0 0 1 花费时间:20
方向如下:0 1 0 1 0 花费时间:23
方向如下:0 1 0 1 1 花费时间:20
方向如下:0 1 1 0 0 花费时间:23
方向如下:0 1 1 0 1 花费时间:20
方向如下:0 1 1 1 0 花费时间:23
方向如下:0 1 1 1 1 花费时间:20
方向如下:1 0 0 0 0 花费时间:24
方向如下:1 0 0 0 1 花费时间:24
方向如下:1 0 0 1 0 花费时间:24
方向如下:1 0 0 1 1 花费时间:24
方向如下:1 0 1 0 0 花费时间:24
方向如下:1 0 1 0 1 花费时间:24
方向如下:1 0 1 1 0 花费时间:24
方向如下:1 0 1 1 1 花费时间:24
方向如下:1 1 0 0 0 花费时间:24
方向如下:1 1 0 0 1 花费时间:24
方向如下:1 1 0 1 0 花费时间:24
方向如下:1 1 0 1 1 花费时间:24
方向如下:1 1 1 0 0 花费时间:24
方向如下:1 1 1 0 1 花费时间:24
方向如下:1 1 1 1 0 花费时间:24
方向如下:1 1 1 1 1 花费时间:24
程序用递归产生了蚂蚁的移动方向,当然也可以非递归. 水平有限,感觉以上程序太暴力,还没想到好的方法..
=====================================================================
听了实验室帅兄的想法才知道,这题真是面试题...想到了真是简单.
两只蚂蚁相撞改变方向,我们完全可以不用理会. 因为结果还是和两只蚂蚁穿越一样,有两只蚂蚁继续向两边走去.
所以问题问题简单多了. 一眼看,就知道最大的时间是位置3的蚂蚁走到右端时间最长24.
最短是00011情况 程序实现也变得简单了
有一根27厘米的细木杆,在第3厘米、7厘米、11厘米、17厘米、23厘米这五个位置上各有一只蚂蚁。木杆很细,不能同时通过一只蚂蚁。开始时,蚂蚁的头朝左还是朝右是任意的,它们只会朝前走或调头,但不会后退。当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。假设蚂蚁们每秒钟可以走一厘米的距离。编写程序,求所有蚂蚁都离开木杆的最小时间和最大时间。
以下是程序实现(java):
class Ant //蚂蚁类
程序运行结果:
0代表向左 1代表向右
方向如下:0 0 0 0 0 花费时间:23
方向如下:0 0 0 0 1 花费时间:17
方向如下:0 0 0 1 0 花费时间:23
方向如下:0 0 0 1 1 花费时间:11
方向如下:0 0 1 0 0 花费时间:23
方向如下:0 0 1 0 1 花费时间:17
方向如下:0 0 1 1 0 花费时间:23
方向如下:0 0 1 1 1 花费时间:16
方向如下:0 1 0 0 0 花费时间:23
方向如下:0 1 0 0 1 花费时间:20
方向如下:0 1 0 1 0 花费时间:23
方向如下:0 1 0 1 1 花费时间:20
方向如下:0 1 1 0 0 花费时间:23
方向如下:0 1 1 0 1 花费时间:20
方向如下:0 1 1 1 0 花费时间:23
方向如下:0 1 1 1 1 花费时间:20
方向如下:1 0 0 0 0 花费时间:24
方向如下:1 0 0 0 1 花费时间:24
方向如下:1 0 0 1 0 花费时间:24
方向如下:1 0 0 1 1 花费时间:24
方向如下:1 0 1 0 0 花费时间:24
方向如下:1 0 1 0 1 花费时间:24
方向如下:1 0 1 1 0 花费时间:24
方向如下:1 0 1 1 1 花费时间:24
方向如下:1 1 0 0 0 花费时间:24
方向如下:1 1 0 0 1 花费时间:24
方向如下:1 1 0 1 0 花费时间:24
方向如下:1 1 0 1 1 花费时间:24
方向如下:1 1 1 0 0 花费时间:24
方向如下:1 1 1 0 1 花费时间:24
方向如下:1 1 1 1 0 花费时间:24
方向如下:1 1 1 1 1 花费时间:24
程序用递归产生了蚂蚁的移动方向,当然也可以非递归. 水平有限,感觉以上程序太暴力,还没想到好的方法..
=====================================================================
听了实验室帅兄的想法才知道,这题真是面试题...想到了真是简单.
两只蚂蚁相撞改变方向,我们完全可以不用理会. 因为结果还是和两只蚂蚁穿越一样,有两只蚂蚁继续向两边走去.
所以问题问题简单多了. 一眼看,就知道最大的时间是位置3的蚂蚁走到右端时间最长24.
最短是00011情况 程序实现也变得简单了
相关文章推荐
- 句柄和ID有什么区别(百度面试题目)
- 百度电话面试题目
- 一个百度的面试题目
- 分别使用c、shell语言实现文件内容合并 -- 2014百度面试题目
- 百度Android 面试题目,亲身经历,绝对真实
- 百度一道关于算法的面试题目
- 今天在网上看到一个百度的C++面试题目
- 2011年10月10日16:22:36百度面试题目汇总☆参考答案随后补充☆
- 关于Web前端开发,附:(百度web前端笔试面试题目)
- 百度面试的两道题目
- 关于Web前端及百度web前端笔试面试题目
- 百度华为等各个面试笔试题目收集
- 百度面试题目总结
- 各大计算机公司 笔试及面试 题目 - 百度(一)
- 百度面试题目的答案[原创]
- 百度面试五只蚂蚁问题已解决
- 最新百度面试题目一
- 百度面试题目
- 数组最小(百度面试题目)对升序数组,求数组中绝对值最小的元素
- 2014百度面试题目---“求比指定整数大且最小的不重复数”解答