您的位置:首页 > 职场人生

百度面试题目-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情况 程序实现也变得简单了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: