下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 實 驗 報 告 3 一、實驗?zāi)康?:掌握漢諾塔的深度有界搜索求解算法的基本思想。二、實驗要求:用 c語言實現(xiàn)漢諾塔的深度有界搜索求解三、實驗語言環(huán)境:c語言四、設(shè)計思路:含有深度界限的深度優(yōu)先搜索算法如下:(1) 把起始節(jié)點s放到未擴展節(jié)點open 表中。如果此節(jié)點為一目標節(jié)點,則得到一個解。(2) 如果 open 為一空表,則失敗退出。(3) 把第一個節(jié)點(節(jié)點 n) 從 open 表移到 closed 表。(4) 如果節(jié)點n 的深度等于最大深度,則轉(zhuǎn)向(2) 。(5) 擴展節(jié)點n,產(chǎn)生其全部后裔,并把它們放入open 表的前頭。如果沒有后裔,則轉(zhuǎn)向 (2) 。(6) 如果后繼節(jié)點中有任一
2、個為目標節(jié)點,則求得一個解,成功退出; 否則, 轉(zhuǎn)向 (2) 。五、實驗代碼:#include #include typedef struct node long map; long floor; / 記錄第幾層 node; node queue362880 / 2 + 1; / 奇偶各一半long tail, head; long hash362880 / 32 + 1; int main() void solve(); while (scanf(%ld, &queue0.map) & queue0.map) memset(hash, 0, sizeof(hash); que
3、ue0.floor = 1; /( 根節(jié)點 )第一層tail = head = 0; solve(); printf(max_floor = %dn, queuehead.floor); printf(total node = %dn, head + 1); printf(total node in theory %dn, 362880 / 2); return 0; void solve() node e; long i, map9, space; long compress(long *); int visited(long *); void swap(long &, long &
4、amp;); while (tail =0; i-) mapi = e.map % 10; if (mapi = 0) space = i; e.map /= 10; visited(map); / 根節(jié)點要置為訪問過if (space = 3) /can up swap(mapspace - 3, mapspace); if (!visited(map) queue+head.map = compress(map); queuehead.floor = queuetail - 1.floor + 1; swap(mapspace - 3, mapspace); if (space = 5)
5、/can down swap(mapspace + 3, mapspace); if (!visited(map) queue+head.map = compress(map); queuehead.floor = queuetail - 1.floor + 1; swap(mapspace + 3, mapspace); if (space % 3 != 0) /can left swap(mapspace - 1, mapspace); if (!visited(map) queue+head.map = compress(map); queuehead.floor = queuetail
6、 - 1.floor + 1; swap(mapspace - 1, mapspace); if (space % 3 != 2) /can right swap(mapspace + 1, mapspace); if (!visited(map) queue+head.map = compress(map); queuehead.floor = queuetail - 1.floor + 1; swap(mapspace + 1, mapspace); void swap(long &x, long &y) x = y; y = x; x = y; long compress
7、(long *map) long t = 0, i; for (i=0; i9; i+) t = t * 10 + mapi; return t; int visited(long *map) long hash(long *); long n = hash(map); long a = n / 32; long b = 1 (n % 32); if (hasha & b) return 1; else hasha |= b; return 0; long hash(long *map) static long t, i, j; static long formula9 = 1, 1, 2, 6, 24, 120, 720, 5040, 40320 ; static long temp9; for (i=0;
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度中醫(yī)婦科師承教育合作合同4篇
- 2025年度智能化生產(chǎn)線設(shè)備采購合同補充協(xié)議3篇
- 2024進出口業(yè)務(wù)銷售合同范本
- 2025不銹鋼水箱售后服務(wù)與維護保養(yǎng)合同范本3篇
- 2024版潛孔鉆租賃業(yè)務(wù)協(xié)議要約一
- 家用電烤盤建設(shè)項目申請報告可行性研究報告
- 2025年度智能駕駛技術(shù)研發(fā)中心高級工程師個人聘用合同3篇
- 2025年度個人抵押貸款合同終止及債權(quán)債務(wù)處理合同范本4篇
- 2025年度個人消費信貸融資委托服務(wù)協(xié)議3篇
- 2025年寧夏公路橋梁建設(shè)有限公司招聘筆試參考題庫含答案解析
- GB/T 12914-2008紙和紙板抗張強度的測定
- GB/T 1185-2006光學(xué)零件表面疵病
- ps6000自動化系統(tǒng)用戶操作及問題處理培訓(xùn)
- 家庭教養(yǎng)方式問卷(含評分標準)
- 城市軌道交通安全管理課件(完整版)
- 線纜包覆擠塑模設(shè)計和原理
- TSG ZF001-2006 安全閥安全技術(shù)監(jiān)察規(guī)程
- 部編版二年級語文下冊《蜘蛛開店》
- 鍋爐升降平臺管理
- 200m3╱h凈化水處理站設(shè)計方案
- 個體化健康教育記錄表格模板1
評論
0/150
提交評論