Baidu笔试题Java求解 – Red

看到Baidu的笔试题如下:

题目:有一根27厘米的细木杆,在第3厘米、7厘米、11厘米、17厘米、23厘米这五个位置上各有一只蚂蚁。木杆很细,不能同时通过一只蚂蚁。开始时,蚂蚁的头朝左还是朝右是任意的,它们只会朝前走或调头,但不会后退。当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。假设蚂蚁们每秒钟可以走一厘米的距离。编写程序,求所有蚂蚁都离开木杆的最小时间和最大时间。

于是手痒想借此学习一下Java:) 折腾了一个小时-_-#,代码如下:

importjava.util.List;importjava.util.ArrayList;/**//**百度笔试题Java求解**@Author:Red_angelX*/publicclassBaiduAns…{/**//**蚂蚁位置*/publicintposition;/**//**方向true为向上,false为向下*/privatebooleandirection=true;/**//**是否已经到达*/publicbooleanIsArrive()…{if(position<0||position>27)returntrue;elsereturnfalse;}/**//**改变方向*/publicvoidChangeDirection()…{if(IsArrive()==false)…{this.direction=!this.direction;}}/**//**设置方向*/publicvoidSetDirection(booleanvalue)…{this.direction=value;}publicvoidMove()…{if(IsArrive()==false)…{//往上走if(direction==true)…{this.position++;}else…{this.position–;}}}/**//**名字*/publicStringAntName;/**//**构造函数*/publicBaiduAns(intpos,booleandir,Stringname)…{this.position=pos;this.direction=dir;this.AntName=name;}publicstaticvoidPrint(Objectmsg)…{System.out.println(msg);}/**//**global*/staticBaiduAnsant3=newBaiduAns(3,true,"蚂蚁3");staticBaiduAnsant7=newBaiduAns(7,true,"蚂蚁7");staticBaiduAnsant11=newBaiduAns(11,true,"蚂蚁11");staticBaiduAnsant17=newBaiduAns(17,true,"蚂蚁17");staticBaiduAnsant23=newBaiduAns(23,true,"蚂蚁23");publicstaticvoidReset()…{ant3.position=3;ant7.position=7;ant11.position=11;ant17.position=17;ant23.position=23;}/***//***@paramargs*/publicstaticvoidmain(String[]args)…{//TODOAuto-generatedmethodstubList<Integer>times=newArrayList<Integer>();//循环for(inti1=0;i1<2;i1++)…{for(inti2=0;i2<2;i2++)…{for(inti3=0;i3<2;i3++)…{for(inti4=0;i4<2;i4++)…{for(inti5=0;i5<2;i5++)…{inttime=0;Reset();//设置方向ant3.direction=i1==0?true:false;ant7.direction=i2==0?true:false;ant11.direction=i3==0?true:false;ant17.direction=i4==0?true:false;ant23.direction=i5==0?true:false;while(!(ant3.IsArrive()&&ant7.IsArrive()&&ant11.IsArrive()&&ant17.IsArrive()&&ant23.IsArrive()))…{//先判断是否相遇if(ant3.position==ant7.position)…{ant3.ChangeDirection();ant7.ChangeDirection();}if(ant7.position==ant11.position)…{ant7.ChangeDirection();ant11.ChangeDirection();}if(ant11.position==ant17.position)…{ant11.ChangeDirection();ant17.ChangeDirection();}if(ant17.position==ant23.position)…{ant17.ChangeDirection();ant23.ChangeDirection();}ant3.Move();ant7.Move();ant11.Move();ant17.Move();ant23.Move();time++;}times.add(time);Print(time);}}}}}//EndForintmin,max;min=max=times.get(0);for(inti=0;i<times.size();i++)…{if(min>times.get(i))…{min=times.get(i);}if(max<times.get(i))…{max=times.get(i);}}Print("MaxTimeis:"+max);Print("MinTimeis:"+min);}}为我祈祷平安就好。我的旅行,会有你们的故事陪伴,所以我不会孤单。放心吧。

Baidu笔试题Java求解 – Red

相关文章:

你感兴趣的文章:

标签云: