欢迎来到天天文库
浏览记录
ID:39431688
大小:121.50 KB
页数:19页
时间:2019-07-03
《百度笔试题目》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、百度技术研发笔试题目1.1/*百度面试题*有一根27厘米的细木杆,在第3厘米、7厘米、11厘米、17厘米、23厘米这五个位置上各有一只蚂蚁。*木杆很细,不能同时通过一只蚂蚁。开始时,蚂蚁的头朝左还是朝右是任意的,它们只会朝前走或调头,*但不会后退。当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。假设蚂蚁们每秒钟可以走一厘米的距离。*编写程序,求所有蚂蚁都离开木杆的最小时间和最大时间。***分析:题目中的蚂蚁只可能相遇在整数点,不可以相遇在其它点,比如3.5cm处之类的,也就是可以让每只蚂蚁走1秒,然后*查看是否有相遇的即可.**这样我的程序实现思路就是,初始化5只蚂蚁,让每只蚂蚁走1秒
2、,然后看是否有相遇的,如果有则做相应处理.当每只蚂蚁都*走出木杆时,我就记录当前时间.这样就可以得到当前状态情况下,需要多久可以走出木杆,然后遍历所有状态则可以得到所胡*可能.*/packagebaidu;publicclassAnt{/**step表示蚂蚁每一个单位时间所走的长度*/privatefinalstaticintstep=1;/**position表示蚂蚁所处的初始位置*/privateintposition;/**direction表示蚂蚁的前进方向,如果为1表示向27厘米的方向走,如果为-1,则表示往0的方向走。*/privateintdirection=1;/**此函数
3、运行一次,表示蚂蚁前进一个单位时间,如果已经走下木杆则会抛出异常*/publicvoidwalk(){if(isOut()){thrownewRuntimeException("theantisout");}position=position+this.direction*step;};/***检查蚂蚁是否已经走出木杆,如果走出返回true**/publicbooleanisOut(){returnposition<=0
4、
5、position>=27;}/***检查此蚂蚁是否已经遇到另外一只蚂蚁*@paramant*@return如果遇到返回true*/publicbooleanisEnco
6、unter(Antant){returnant.position==this.position;}/***改变蚂蚁的前进方向*/publicvoidchangeDistation(){direction=-1*direction;}/***构造函数,设置蚂蚁的初始前进方向,和初始位置*@paramposition*@paramdirection*/publicAnt(intposition,intdirection){this.position=position;if(direction!=1){this.direction=-1;//方向设置初始位置,比如为0时,也将其设置为1.这样可以
7、方便后面的处理}else{this.direction=1;}}}/////////////////////////////////////////////////////////packagebaidu;publicclassController{publicstaticvoidmain(String[]args){inttime=0;for(inti=0;i<32;i++){Ant[]antArray=getAntList(getPoistions(),getDirections(i));while(!isAllOut(antArray)){for(Antant:antArray){i
8、f(!ant.isOut()){ant.walk();}}time++;//查看是否有已经相遇的Ant,如果有则更改其前进方向dealEncounter(antArray);}System.out.println(time);//将时间归0,这样可以重新设置条件,再次得到全部走完所需要的时间.time=0;}}/***这个函数的算法很乱,但暂时能解决问题**@paramlist*/publicstaticvoiddealEncounter(Ant[]antArray){intnum_ant=antArray.length;for(intj=0;j9、=j+1;k
9、=j+1;k
此文档下载收益归作者所有