1 / 13
文档名称:

百度面试题及答案.doc

格式:doc   大小:61KB   页数:13页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

百度面试题及答案.doc

上传人:小雄 2021/7/18 文件大小:61 KB

下载得到文件列表

百度面试题及答案.doc

相关文档

文档介绍

文档介绍:百度技术研发笔试题目
/*百度面试题
*有一根27厘米的细木杆,在第3厘米、7厘米、11厘米、17厘米、23厘米 这五个位置上各有一只蚂蚁。
*木杆很细,不能同时通过一只蚂蚁。开始时,蚂蚁的头朝左还是朝右是任意 的,它们只会朝前走或调头,
*但不会后退。当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。假 设蚂蚁们每秒钟可以走一厘米的距离。
*编写程序,求所有蚂蚁都离开木杆的最小时间和最大时间。
*
*
*分析:题目中的蚂蚁只可能相遇在整数点,不可以相遇在其它点, 之类的,也就是可以让每只蚂蚁走1秒,然后
*查看是否有相遇的即可.
*
*这样我的程序实现思路就是,初始化5只蚂蚁,让每只蚂蚁走1秒,然后看是否 有相遇的,
*走出木杆时,,需要多久可 以走出木杆,然后遍历所有状态则可以得到所胡
*可能.
*/
package baidu;
public class Ant (
* step表示蚂蚁每一个单位时间所走的长度
*/ private final static int step = 1;
/检查蚂蚁是否已经走出木杆,如果走出返回true
*
*/
position表示蚂蚁所处的初始位置
*/
private int position;
/*
direction表示蚂蚁的前进方向,如果为1表示向27厘米的方向走,如果为 一1,则表示往0的方向走。
*/
private int direction = 1;
/*
*此函数运行一次,表示蚂蚁前进一个单位时间,如果已经走下木杆则会抛出 异常
*/
public void walk() (
if(isOut()) (
throw new RuntimeException("the ant is out");
}
position = position + * step;
};
public boolean isOut() (
return position <= 0 II position >= 27;
}
/*/
public Ant(int position, int direction) ( = position;
if (direction != 1) (
*检查此蚂蚁是否已经遇到另外一只蚂蚁
@ param ant
©return如果遇到返回true
*/
public boolean isEncounter(Ant ant) (
return == ;
}
/**
*改变蚂蚁的前进方向
*/
public void changeDistation() (
direction = -1 构造函数,设置蚂蚁的初始前进方向,和初始位置
@ param position
@ param direction
direction;
}
= -1;〃方向设置初始位置,比如为0时,
便后面的处理
} else (
= 1;
}
}
} lllllllllllllllllllllllllllllllllllllllllllllllllllllllll
package baidu;
public class Controller (
public static void main(String[] args) (
int time = 0;
for (int i = 0; i < 32; i++) (
Ant[] antArray = getAntList(getPoistions(), getDirections(i));
while (!isA110ut(antArray)) (
for (Ant ant: antArray) (
if (!()) (
();
}
}
time++;
//查看是否有已经相遇的Ant,如果有则更改其前进方向 dealEncounter(antArray);
}
(time);
//将时间归0,这样可以重新设置条件,再次得到全部走完所需要的时间.
time = 0;
}
}
/**
*这个函数的算法很乱,但暂时能解决问题
*
* @ param list
*/
public static voi