


下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、數據結構課程常見問題 -單元18 漢諾塔問題1漢諾塔問題?解析:漢諾塔遞歸棧 問題抽象 3個塔,n個碟子 初始:所有碟子放在1號塔,大的在底下,小的在上面 任務:把碟子移動到2號塔,順序不變, 可用3號塔輔助 限制 每次只能移動一個碟子 總是大碟子在下,小的在上 遞歸解法 移動碟子的方法:move(n, t1, t2, t3) 將n個碟子從t1移到t2,t3輔助 可分解為3個步驟 將n-1個碟子從t1移到t3:move(n-1, t1, t3, t2) 將最大的碟子從t1移到t2 將n-1個碟子從t3移到t2:move(n-1, t3, t2, t1) 漢諾塔遞歸程序 void TowersO
2、fHanoi(int n, int x, int y, int z) / Move the top n disks from tower x to tower y. / Use tower z for intermediate storage. if (n 0) TowersOfHanoi(n-1, x, z, y); cout Move top disk from tower x to top of tower y endl; TowersOfHanoi(n-1, z, y, x); moves(n)=2n-1最少次數,(2n) 一般遞歸程序轉換為循環 遞歸函數主體的轉換 轉換為循環,whi
3、le(1)即可 遞歸調用的轉換 將當前參數、局部變量(活動記錄)壓棧 參照調用方式改變參數,繼續循環 函數執行結束遞歸返回的處理 若棧空,整個遞歸過程結束,跳出循環 否則,將調用者的活動記錄彈出棧,恢復其環境,繼續循環 遞歸函數不同入口的區分返回地址的處理 上例:ENTRANCE、FIRST、SECOND 活動記錄的一部分,與參數、局部變量一同壓棧、出棧 在循環主體中,根據當前活動記錄的入口值,執行不同代碼 漢諾塔的遞歸棧實現 #include #include #include #include #include using namespace :std; enum ENTRANCE = 0
4、, FIRST, SECOND ; struct ac int n, x, y, z; int r; ; 漢諾塔的遞歸棧實現 void hanoi(int n, int x, int y, int z) stack stack; struct ac ac = n, x, y, z, ENTRANCE ; while (1) if (ac.n = 0) if (stack.empty() break; ac = stack.top(); stack.pop(); if (ac.r = ENTRANCE) ac.r = FIRST; else ac.r = SECOND; 漢諾塔遞歸棧實現 if
5、(ac.r = ENTRANCE) stack.push(ac); ac.n-; swap(ac.y, ac.z); else if (ac.r = FIRST) cout Move top disk from tower ac.x to top of tower ac.y endl; stack.push(ac); ac.r = ENTRANCE; ac.n-; swap(ac.x, ac.z); 漢諾塔遞歸棧實現 else if (ac.r = SECOND) if (stack.empty() break; ac = stack.top(); stack.pop(); if (ac.r = ENTRANCE) ac.r = FIRST; else ac.r = SECOND; 漢諾塔遞歸棧實現
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國多頭絲軸帽數據監測研究報告
- 2025至2030年中國雙盤腸粉爐數據監測研究報告
- 辦公室環境的健康風險分析與數據挖掘研究
- 游泳救生員應急流程知識試題及答案
- 足球裁判員社區互動試題及答案
- 裁判員如何建設良好的賽場氛圍試題及答案
- 創新教育中的區塊鏈技術與知識產權保護策略
- 場地直播服務合同協議
- 傳統教育主題班會
- 地平車維修合同協議
- 2025年鄭州鐵路職業技術學院單招職業傾向性測試題庫必考題
- 2025年許昌職業技術學院單招職業技能測試題庫及答案一套
- 2025年安陽職業技術學院高職單招語文2019-2024歷年真題考點試卷含答案解析
- 2025陜西省建筑安全員-B證考試題庫及答案
- 第四屆“魅力之光”知識競賽初賽題庫
- 《旅行社經營與管理》電子教案 5-3 旅行社接待業務3
- 中央2024年國家藥品監督管理局中國食品藥品檢定研究院招聘筆試歷年參考題庫真題考點解題思路附帶答案詳解
- 2025年浙江路橋中國日用品商城股份有限公司招聘筆試參考題庫附帶答案詳解
- 交通性腦積水的健康宣教
- 餐飲行業企業戰略管理論文4000字范文
- 遼宋夏金元時期經濟的繁榮課件七年級歷史下冊
評論
0/150
提交評論