太空站之謎解題報告_第1頁
太空站之謎解題報告_第2頁
太空站之謎解題報告_第3頁
太空站之謎解題報告_第4頁
太空站之謎解題報告_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、太空站之謎解:太空站里所有未知物質(zhì)連成一片(通格看作空地,墻把空地圍起來,空地中間沒有墻題目中告:任意傳送門周圍的 8 個格子中不會有其他傳送門或者未知質(zhì)。這個條件給予很大的幫助,它是一個很容易實現(xiàn)的判斷條件。利用這墻相鄰(包括僅有一個頂點相鄰)1都不是傳送門。顯然,綠格繞墻一周并把所有的白格都包在中間,并且所有的圖 1 如何判斷某一白格是否為傳送門個白格,使得它太空站之謎解:太空站里所有未知物質(zhì)連成一片(通格看作空地,墻把空地圍起來,空地中間沒有墻題目中告:任意傳送門周圍的 8 個格子中不會有其他傳送門或者未知質(zhì)。這個條件給予很大的幫助,它是一個很容易實現(xiàn)的判斷條件。利用這墻相鄰(包括僅有一

2、個頂點相鄰)1都不是傳送門。顯然,綠格繞墻一周并把所有的白格都包在中間,并且所有的圖 1 如何判斷某一白格是否為傳送門個白格,使得它的北面和西面都是綠格。(如圖圖 2 中的 P)1 中的 10、確定機(jī)器人位于 B,那么 如果機(jī)器人不在B,那么P就是傳送門,可以把P 染成黑色,并且把P 周圍一圖 123456789ABP1234567892如何判斷機(jī)器人的當(dāng)前位置即為假象位 判斷機(jī)器人是否在 所假想機(jī)器人就在 這一格先讓他移動到邊界上的一個。)就可以確定原先機(jī)器人的確在 3 機(jī) 人順時針繞墻一 于是得到了一個關(guān)于ESWN對于每一個靠墻的格子(圖 鄰邊它在 2,63115用 0123 來分別表示E

3、SWN4 如何把傳送門配對P1 P2 2如何判斷機(jī)器人的當(dāng)前位置即為假象位 判斷機(jī)器人是否在 所假想機(jī)器人就在 這一格先讓他移動到邊界上的一個。)就可以確定原先機(jī)器人的確在 3 機(jī) 人順時針繞墻一 于是得到了一個關(guān)于ESWN對于每一個靠墻的格子(圖 鄰邊它在 2,63115用 0123 來分別表示ESWN4 如何把傳送門配對P1 P2 再判斷當(dāng)前機(jī)器人是否位于B。如果機(jī)器人確實位于B, 圖 5(某地圖的一部分5 機(jī)器人所走的步數(shù)是否會超過 ABNE圖為 15*15 且有 5 個傳輸裝置的這種最大情況。最外面的一圈一定是墻,所以空地的最大面積是 169。xy2y+4一般很快就會得,不通過綠格走最

4、短路圖為 15*15 且有 5 個傳輸裝置的這種最大情況。最外面的一圈一定是墻,所以空地的最大面積是 169。xy2y+4一般很快就會得,不通過綠格走最短路徑到一個目標(biāo)位置的花費一般不超過 50 次移動(在大所以,總的操作次數(shù)應(yīng)該不超過(x+10)*(2y+4+50)可以粗略地認(rèn)為 x+y=180(實際上 x+y 不可能超過 169)所以 x+10+y+270thenbegin for x1:=i-1 to i+1 do fory1:=j-1for i:=1 to n do forj:=1tomdoifmapi,j=-1thenbegin 已的格子的坐標(biāo)for i:=2 to n-1 dofo

5、r j:=2to m-1 ifmapi,j0thenbegin for x1:=i-1 to i+1 do fory1:=j-1toj+1do找出綠格if mapx1,y1=0then l:=(j+2)mod4; l:=(l+1)mod4; if(l+1)mod4jthenndi:=maxb; until 1 號格開始順時針繞墻走一圈先讓機(jī)器人面朝西向后轉(zhuǎn)直到可以向前一步走這一步所走的方向更新機(jī)器人的朝向直到機(jī)器人回到一號格子function ;每一個格子是否走過listpr前驅(qū)格;prd前驅(qū)方向數(shù)組r讀指針;w寫指針寬度優(yōu)先搜索初始化ifstp=enp)or(enp=0)and(ndstp0

6、thengoto1;考慮起點即為終點的情況 for i:=0 to 3 do begin 嘗試向四個方向擴(kuò)展if(mapx1,y10)and(doorx1,y1=0)andr讀指針;w寫指針寬度優(yōu)先搜索初始化ifstp=enp)or(enp=0)and(ndstp0thengoto1;考慮起點即為終點的情況 for i:=0 to 3 do begin 嘗試向四個方向擴(kuò)展if(mapx1,y10)and(doorx1,y1=0)andbmapx1,y1thenbegin if(listw=enp)or(enp=0)and(ndlistw0)thengoto到達(dá)終點后跳出循環(huán)whileistpd

7、obegin 返回終點的位置從stp enp的走法打開關(guān)閉var i:移動的方向if(i=1)andrememberthenbegin 器人把移動方向記下來var i: fori:=tmemdownto1doMoveRobot(dch(memi+2) mod;if(i=1)andrememberthenbegin 器人把移動方向記下來var i: fori:=tmemdownto1doMoveRobot(dch(memi+2) mod;到靠墻格的最短路徑fori:=tpathdownto1dobegin ifj=0thenbegin 讓機(jī)器人沿這條路移動返回退出g更新當(dāng)前機(jī)器人的假想位置獲得該

8、格子在ESWN 串中的起始位置機(jī)器人的朝向初始化l:=(j+3) modwhileMvRobot(l)=0 dol:=(l+1)mod g+dyl更新機(jī)器人的假想位置若實際的繞墻走法與假想中不符ifldrctithenbegin ifimaxbtheni:=1; 返回false 并退出更新機(jī)器人的朝向直到完成繞墻一周返回untiltotfind 已經(jīng)找到的門的總數(shù)l找一個西面和北面都是綠格的白格找一條到它的北面的格子的最短路徑for i:=tpathdownto1do MoveRobot(dchpathi); 讓機(jī)器人移動過去向南走一步向西走一步gif then 若猜測正確格子L不是傳送門機(jī)器

9、人的當(dāng)前位置即為假想位置;elsel找一個西面和北面都是綠格的白格找一條到它的北面的格子的最短路徑for i:=tpathdownto1do MoveRobot(dchpathi); 讓機(jī)器人移動過去向南走一步向西走一步gif then 若猜測正確格子L不是傳送門機(jī)器人的當(dāng)前位置即為假想位置;else若猜想錯誤沿原路返回機(jī)器人的當(dāng)前位置為猜想開始前的位置;forx1:=xl-1 toxl+1for y1:=yl-1 to yl+1doif totfind=k*2thenbegin若所有的傳送門都已找到L是傳送門for x1:=2 to n-1 do fory1:=2tom-1doif door

10、x1,y1=-1 then退出match:array1.maxdoor把傳送門配對; last 最后一個尚未配對的傳送門傳送門12 配對whilelast0)andmatchlastdodec(last)更新最后一個尚未配對的傳送門 for i:=1to k*2ifnot(matchi)thenbegin for j:=i+1 to last-1 doifnot(matchj)then枚舉尚未配對的傳送門假設(shè)傳送門i whilelast0)andmatchlastdodec(last)更新最后一個尚未配對的傳送門 for i:=1to k*2ifnot(matchi)thenbegin for

11、 j:=i+1 to last-1 doifnot(matchj)then枚舉尚未配對的傳送門假設(shè)傳送門i j 配對for j:=tpathdownto 1do 讓機(jī)器人移動到傳送門i 的西面一格l;讓機(jī)器人向東走一步假想機(jī)器人在傳送門j 的東面一格gif then若假想成立傳送門ij屬于同一個傳送裝置else;機(jī)器人的當(dāng)前位置即為假想位置跳出當(dāng)前循環(huán)若假想不成立沿原路返回機(jī)器人回到猜想開始前的位置if not(matchi)then 初始化找出傳送門把傳送門配對附錄二:問題描述3000 南。有趣的是,太空站里所有未知物質(zhì)連成一片(沿東南西北四個方向連通1,2,3。下圖就是是其中一個叫FT N

12、WESFT 12 號真空格( 123456789附錄二:問題描述3000 南。有趣的是,太空站里所有未知物質(zhì)連成一片(沿東南西北四個方向連通1,2,3。下圖就是是其中一個叫FT NWESFT 12 號真空格( 123456789。 K 實際路線是 12-11-5-1,根本沒有到達(dá)格子 8 上面那個不能去的格子。ion.dat。 K 實際路線是 12-11-5-1,根本沒有到達(dá)格子 8 上面那個不能去的格子。ion.datN, M, K(6 N, M 15, 輸入文件字母“S你的程序應(yīng)當(dāng)與測試庫進(jìn)行交互。測試庫提供三個函數(shù):InitMoveRobotAnswer,它們的作用和用Init 必須首先調(diào)用,且只能調(diào)用一次,以MoveRobot 函數(shù)的作用器人。該函數(shù)僅有一個參數(shù)數(shù)的返回值表示該動作是否完成。0 表示失敗,1 Answer函數(shù)用來告訴測試庫你找到的傳送裝置。它有兩個參 usesProcedureProcedure你應(yīng)當(dāng)建立一個工程,把文件robot.o包含進(jìn)來。voidvoid如果你的程序出現(xiàn)以下 usesProcedureProcedure你應(yīng)當(dāng)建立一個工程,把文件robot.o包含進(jìn)來。voidvoid如果你的程序出現(xiàn)以下 種情況之一,相應(yīng)數(shù)據(jù):打s以外的其他文件,包括臨時文78* 無1110010無3276750%改用testlib 庫3276750%改用te

溫馨提示

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

評論

0/150

提交評論