迷宮問題的關鍵操作要點_第1頁
迷宮問題的關鍵操作要點_第2頁
迷宮問題的關鍵操作要點_第3頁
迷宮問題的關鍵操作要點_第4頁
迷宮問題的關鍵操作要點_第5頁
已閱讀5頁,還剩40頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

姓名設計題目:迷宮問題的操作設計任務(重要技術參數):學會運用數據構造建立迷宮問題,編造出迷宮并設計出走出迷宮的措施硬件環境:處理器:英特爾第三代酷睿i3-3GHz內存:4GB(三星DDR31333MHz)主硬盤:希捷ST500LM012HN-M500MBB(500GB/5400轉/分)顯示屏:三星SEC3649(14英寸)軟件環境:操作系統:Windows864位(DirectX11)指導教師評語:1、課程設計目的構造的應用、算法的編寫、類C語言的算法轉換成C程序并用TC上機調試的基本據構造中鏈表的創立、合并等措施以和怎樣通過轉化成C語言在微機上運行實現等其他方面的能力。2.1問題描述:迷宮問題是取自心理學的一種古典試驗。在該試驗中,把一只老鼠從一種無頂大盒子的門放入,在盒子中設置了許多墻,對行進方向形成了多處阻擋。盒子僅有一種出口,在出口處放置一塊奶酪,吸引老鼠在迷宮中尋找道路以抵達出口。對同一只老鼠反復進行上述試驗,一直到老鼠從入口走到出口,而不走錯一步。老鼠通過多次試驗最終學會走通迷宮的路線。設計一種計算機程序對任意設定的矩形迷宮如下圖A所示,求出一條從入口到出口的通路,或得出沒有通路的結論。????????(3)用一種標志(如數字8)在迷宮中標出該條通路;3.課程設計總體方案和分析3.迷宮途徑的搜索:首先從迷宮的入口開始,假如該位置就是迷宮出口,則已經找到了一條途徑,搜索工作結束。否則搜索其上、下、左、右位置與否是障礙,若不是障礙,就移動到該位置,然后再從該位置開始搜索通往出口的途徑;若是障礙就選擇另一種相鄰的位置,并從它開始搜索途徑。為防止搜索反復出現,則將已搜索過的位置標識為2,同步保留搜索痕跡,在考慮進入下一種位置搜索之前,將目前位置保留在一種隊列中,假如所有相鄰的非障礙位置均被搜索過,且未找到通往出口的途徑,則表明不存在從入口到出口的途徑。這實現的是廣度優先遍歷的算法,假如找到途徑,則為最短途徑。以矩陣00101為例,來示范一下首先,將位置(0,0)(序號0)放入隊列中,其前節點為空,從它開始搜索,其標識變為2,由于其只有一種非障礙位置,因此接下來移動到(0,1)(序號1),其前節點序號為0,標識變為2,然后從(0,1)移動到(1,1)(序號2),放入隊列中,其前節點序號為1,(1,1)存在(1,2)(序號3)、(2,1)(序號4)兩個可移動位置,其前節點序號均為2.對于每一種非障礙位置,它的相鄰非障礙節點均入隊列,且它們的前節點序號均為該位置的序號,因此假如存在途徑,則從出口處節點的位置,逆序就可以找到其從出口到入口的通路。如下表所示:由此可以看出,得到最短途徑:(3,4)(3,3)(2,3)(2,2)(1,2)(1,1)(0,1)(0,0)搜索算法流程圖如下所示:將(0,0)入隊列YNN是杏到達迷宮處Y右邊是否存在下邊是否存在是否存在是否存在N1.①構建一種二維數組maze[M+2][N+2]用于存儲迷宮矩陣②自動或手動生成迷宮,即為二維數組maze[M+2][N+2]賦值③構建一種隊列用于存儲迷宮途徑④建立迷宮節點structpoint,用于存儲迷宮中每個節點的訪問狀況⑤實現搜索算法⑥屏幕上顯示操作菜單2.迷宮的操作{定義ij為循環變量{定義ij為循環變量②迷宮中隊列出隊操作③判斷隊列與否為空{返回head==tail的值,當隊列為空時,返回0}④訪問迷宮矩陣中節點voidvisitintrowintcolint⑤途徑求解voidmgpath(intmaze[intmintn為障礙,則此迷宮無解,返回0,程序結束。否則訪問入口節點,將入口節點判斷隊列與否為空,當隊列不為空時,則運行如下操作:{調用dequeue()函數,將隊頭元素返回給p,假如p.row==m-1且p.col==n-1,即抵達出口節點,即找到了途徑,結束假如p.col+1<n且maze[p.row][p.col+1]==0,闡明訪問到出口(找到途徑)即p.row==m-1且p.col==n-1,則逆序將途徑標識為3即最終將途徑圖形打印出來。3.菜單項選擇擇☆手動生成迷宮請按:1☆自動生成迷宮請按:2☆退出請按:3{case1:請輸入行列數(假如超過預設范圍則提醒重新輸入)}在調試過程中,首先使用的是棧進行存儲,不過C:\DocmentsandSettings\nev\桌面\Dcbug\Cpp1.exe'歡迎進入迷宮求解系統NNKFKNKNNSNNSNNCNNNNKNSNNCKKNNNNSSFNNSNSNNSSRNNNNNSNNN舌動生盛類宴請接:小請選擇你的操作:1請輸入行數:44請輸入列數:4抱歉,你輸入的行列數超出預設范圍<8-39,8-39>,請重新輸入:請輸入行數:4請輸入列數:4請按行輸入迷宮,B表示通路,1表示障礙:迷宮生成結果如下:迷宮入口請輸入行數:44迷宮生成結果如下迷喜入口…迷宮路徑為:(3.3)(1.0)(0.0)迷言通路(用☆表示)如下所示:搜狗拼音輸入法全:KK歡迎進入迷宮求解系統☆☆手動生成迷言請按:1☆自動生成據言請按:2☆退出請按:3xkm**xxxmkx?0*xxmk***mxxxmxkmb?xxmm**m**xmxxxk*2請按任意健繼續...北選宮無解搜物拼音輸入法全:通過本次的課程設計,使我學會了怎樣去組織代碼量較大大程序。與此同步,也使我學會了某些對代碼量較大的的程序進行編寫、連接、編譯運行、以和調試和修改的技巧這次的課程設計涉和到編程語言和數據構造的知識,規定和平時的實比相對較高。從本次的課程設計可以檢查我們對C語言和數據構造的掌握狀況,同步也檢查了我們對所學習過的知識的靈活運用狀況。在創新性方面,這次的課程設計雖然完畢了課程設計的任務,不過缺乏發明性的設計思想,在后來的學習過程中還得繼續努力。[1].嚴蔚敏編著.數據構造(C語言版).清華大學出版社,2023[2].朱戰立.編著.數據構造——使用C語言.西安交通大學出版社,2023[4].蘇小紅,孫志崗等編著.C語言大學實用教程(第2版).電子工業出版社,})if(maze[i][j]=printf}}if(maze[i][j]=printf)))}}}}}{printf('\n=====================}{printf('\n========================)print(***************************************************************rint***********************************************

溫馨提示

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

評論

0/150

提交評論