百度技術(shù)研發(fā)類筆試題_第1頁(yè)
百度技術(shù)研發(fā)類筆試題_第2頁(yè)
百度技術(shù)研發(fā)類筆試題_第3頁(yè)
百度技術(shù)研發(fā)類筆試題_第4頁(yè)
百度技術(shù)研發(fā)類筆試題_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、百度技術(shù)研發(fā)類筆試題有一根 27厘米的細(xì)木桿,在第 3厘米、 7厘米、 11 厘米、17 厘米、 23厘米這五個(gè)位置上各有一只螞蟻。木桿很細(xì),不能同時(shí)通 過(guò)一只螞蟻。開始時(shí),螞蟻的頭朝左還是朝右是任意的,它們只會(huì)朝 前走或調(diào)頭,但不會(huì)后退。 當(dāng)任意兩只螞蟻碰頭時(shí),兩只螞蟻會(huì)同時(shí) 調(diào)頭朝反方向走。假設(shè)螞蟻們每秒鐘可以走一厘米的距離。編寫程序,求所有螞蟻都離開木桿的最小時(shí)間和最大時(shí)間。分析: 題目中的螞蟻只可能相遇在整數(shù)點(diǎn) , 不可以相遇在其它點(diǎn)比如3.5cm處之類的,也就是可以讓每只螞蟻?zhàn)?秒,然后查看是否有 相遇的即可 .這樣我的程序?qū)崿F(xiàn)思路就是 , 初始化 5只螞蟻,讓每只螞 蟻?zhàn)?1 秒,

2、 然后看是否有相遇的 , 如果有則做相應(yīng)處理 . 當(dāng)每只螞蟻都 走出木桿時(shí) , 我就記錄當(dāng)前時(shí)間 . 這樣就可以得到當(dāng)前狀態(tài)情況下 , 需 要多久可以走出木桿 , 然后遍歷所有狀態(tài)則可以得到所有可能 .*/packagebaidu;publilassAnt/*step 表示螞蟻每一個(gè)單位時(shí)間所走的長(zhǎng)度*/privatefinalstaticintstep=1;/*position 表示螞蟻所處的初始位置*/privateintposition;/*direction 表示螞蟻的前進(jìn)方向,如果為 1 表示向 27 厘米的 方向走,如果為 -1 ,則表示往 0 的方向走。*/privateintd

3、irection=1;/*如果已經(jīng)走下* 此函數(shù)運(yùn)行一次, 表示螞蟻前進(jìn)一個(gè)單位時(shí)間,木桿則會(huì)拋出異常*/publicvoidwalk()if(isOut()thrownewRuntimeException(theantisout);position=position+this.direction*step;/*檢查螞蟻是否已經(jīng)走出木桿,如果走出返回true*/ publicbooleanisOut()returnposition=27;檢查此螞蟻是否已經(jīng)遇到另外一只螞蟻*paramant*return 如果遇到返回 true*/publicbooleanisEncounter(Antant)

4、returnant.position=this.position;/* 改變螞蟻的前進(jìn)方向*/publicvoidchangeDistation()direction=-1*direction;構(gòu)造函數(shù) , 設(shè)置螞蟻的初始前進(jìn)方向 , 和初始位置*paramposition*paramdirection*/publicAnt(intposition,intdirection)this.position=position;if(direction!=1)this.direction=-1;/方向設(shè)置初始位置 , 比如為 0 時(shí) , 也將其設(shè)置為 1. 這樣可以方便后面的處理elsethis.di

5、rection=1;/packagebaidu;publilassControllerpublicstaticvoidmain(Stringargs)inttime=0;for(inti=0;i32;i+)AntantArray=getAntList(getPoistions(),getDirections(i);while(!isAllOut(antArray)for(Antant:antArray)if(!ant.isOut()ant.walk();time+;/ 查看是否有已經(jīng)相遇的 Ant, 如果有則更改其前進(jìn)方向dealEncounter(antArray);System.out.p

6、rintln(time);/ 將時(shí)間歸 0,這樣可以重新設(shè)置條件 , 再次得到全部走完所需 要的時(shí)間.time=0;/* 這個(gè)函數(shù)的算法很亂,但暫時(shí)能解決問(wèn)題*paramlist*/publicstaticvoiddealEncounter(AntantArray)intnum_ant=antArray.length;for(intj=0;jfor(intk=j+1;k if(antArrayj.isEncounter(antArrayk) antArrayj.changeDistation(); antArrayk.changeDistation();/* 因?yàn)橛?只Ant,所以組合之后有3

7、2種組合.剛好用5位二進(jìn) 制來(lái)表示,如果為0則表示Ant往0的方向走如果為1,則表示往27 的方向走*注:在通過(guò)Ant的構(gòu)造函數(shù)設(shè)置初始值時(shí),通過(guò)過(guò)濾把0修改成了-1.*/publicstaticintgetDirections(intseed)intresult=newint5;result0=seed%2;result1=seed/2%2;result2=seed/4%2;result3=seed/8%2;result4=seed/16%2;System.out.println(directionsis+result0+|+result1+|+result2+|+result3+|+res

8、ult4);returnresult;/* 批量設(shè)置 Ant 的初始位置 ,這樣設(shè)置不是十分必要 , 可以直接在代碼中設(shè)置*return*/publicstaticintgetPoistions()returnnewint3,7,11,17,23;/*取得設(shè)置好初始值的 5 只 Ant*parampositions*paramdirections*return*/publicstaticAntgetAntList(intpositions,intdirections)Antant3=newAnt(positions0,directions0);Antant7=newAnt(positions1,directions1);Antant11=newAnt(positions2,directions2);Antant17=newAnt(positions3,directions3);Antant23=newAnt(positions4,directions4);returnnewAntant3,ant7,ant11,ant17,ant23;判斷是否所有的 Ant 都已經(jīng)走出了木桿 , 也就是設(shè)置退出條件*paramantArray*return*/publicstaticboolea

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論