版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、人工智能梵塔問(wèn)題實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)?zāi)康?. 熟悉和掌握問(wèn)題規(guī)約法的原理、實(shí)質(zhì)和規(guī)約過(guò)程2. 理解規(guī)約圖的表示方法3. 熟悉并掌握遞歸解決問(wèn)題的思想實(shí)驗(yàn)原理1. 利用問(wèn)題規(guī)約法的原理進(jìn)行問(wèn)題的分析與描述2. 利用遞歸思想進(jìn)行問(wèn)題的解決實(shí)驗(yàn)條件1. Window NT/xp/7及以上的操作系統(tǒng)2. 內(nèi)存在512M以上3. CPU在奔騰II以上實(shí)驗(yàn)內(nèi)容梵塔問(wèn)題源于印度古老的一個(gè)傳說(shuō)。 相傳開(kāi)天辟地的神勃拉瑪創(chuàng)造世界時(shí)在 印度北部的佛教圣地的圣廟里,安放了三根金剛石的棒,第一根上面套著64個(gè)圓的金片,最大的一個(gè)在底下,其余一個(gè)比一個(gè)小,依次疊上去,廟里的眾僧不 倦地把它們一個(gè)個(gè)地從這根棒搬到另一根棒上, 規(guī)
2、定可利用中間的一根棒作為幫 助,但每次只能搬一個(gè),而且大的不能放在小的上面。值班僧侶按照法則日夜不 停地搬運(yùn),當(dāng)搬運(yùn)完成時(shí)世界將在一聲霹靂中毀滅。實(shí)驗(yàn)分析我們假設(shè)把該任務(wù)交給一個(gè)僧人,為了方便敘述,將他編號(hào)為64。僧人自然16會(huì)這樣想:假如有另外一個(gè)僧人能有辦法將 63個(gè)盤(pán)子從一個(gè)座移到另一個(gè)座, 那么問(wèn)題就解決了,此時(shí)僧人64只需這樣做:1.2.命令僧人63將63個(gè)盤(pán)子從A座移到C座自己將最底下的最大的一個(gè)盤(pán)子從 A座移到C座 再命令僧人63將63個(gè)盤(pán)子從B座移到C座3.為了解決將63個(gè)盤(pán)子從A座移到B座的問(wèn)題,僧人63又想:如果能再有一 個(gè)僧人62能將62個(gè)盤(pán)子移動(dòng)到另一座,我就能將63個(gè)
3、盤(pán)子從A座移動(dòng)到B座。 他是這樣做的:命令僧人62將62個(gè)盤(pán)子從A移動(dòng)到C 自己將一個(gè)盤(pán)子從 A座移動(dòng)到B座 再命令僧人62將62個(gè)盤(pán)子移到B座1.2.3.再進(jìn)行一次遞歸。如此“層層下放”,直到后來(lái)找到第2個(gè)僧人,讓他完成 將2個(gè)盤(pán)子從一個(gè)座移到另一個(gè)座,進(jìn)行到此,問(wèn)題就解決了。最后找到第 1 個(gè)僧人,讓他完成將一個(gè)盤(pán)子從一個(gè)座移動(dòng)到另一個(gè)座, 至此,全部工作已經(jīng)完 成,該煩他問(wèn)題得到解決。實(shí)驗(yàn)步驟主程序流程圖梵塔求解流程圖開(kāi)始輸入盤(pán)子數(shù)初始化過(guò)程繪制初始圖形T漢諾塔求解結(jié)束主程序流程圖梵塔問(wèn)題遞歸過(guò)程流程圖程序代碼#in elude #in elude gra phics.h#in elud
4、e #in elude #in elude #define PAOGAO 190 /*動(dòng)畫(huà)拋高,數(shù)值越小越高*/#defi ne P ANHOU 10/*#define PANAMOUNT 19 盤(pán)子數(shù) */int PANAMOUNT;typ edef int pans;typ edef struct s_p illarint amount;int x,y;pans pan20;/*存放每個(gè)盤(pán)的代號(hào) */p illars;pillars pillar4;/* 三個(gè)臺(tái)柱 */int moveeount=O;/* 移動(dòng)計(jì)數(shù) */void draw pillar( pillars p);void i
5、nit();/*初始化函數(shù)*/void drawmat(ehar *mat,i nt matsize,i nt x,i nt y,i nt eolor); /*點(diǎn)陳漢字 */void draw pan(pans p ,i nt x,i nt y);void zimu();/* 顯示字幕 */void drawpps();/*畫(huà)裝盤(pán)的臺(tái)柱*/void hanoi();/* 主算法 */*完成! */void hanoi(int n, char on e,char two,char three); void sdelay(int delay_t); /* 函數(shù)申明 */ void fini sh(
6、);void mai n(void) /*主函數(shù)*/prin tf(nt please inp ut n(*=19):);/*輸入要演示的盤(pán)子數(shù) */scan f(%d,&P ANAMOUNT);if(PANAMOUNT19)/* 越界的話(huà) n 當(dāng) 19 處理 */PANAMOUNT=19 ;ini t();draw pp s();han oi( PANAMOUNT,a,b,c);fin ish();void init() /*初始化函數(shù)*/in t gd=DETECT,gm ;int i,n, color ;clrscr();in itgra ph(&gd, &gm,c:tc);cleard
7、evice();pillar1.amou nt = P ANAMOUNT;pillar1.x = 105;pillar1.y = 405;for(i=1;i=p illar1.am oun t;i+)p illar1. pan i=p illar1.am oun t-i+1;P illar2.am ount = 0; pillar2.x = 320; pillar2.y = 405;p illar3.am ount = 0; pillar3.x = 527; pillar3.y = 405;/*柱座標(biāo)記*/setcolor(YELLOW); settextstyle(0,0,2);outtex
8、txy(105,418,A);outtextxy(320,418,B);outtextxy(527,418,C);setcolor(YELLOW); /* 畫(huà)框 */setli nestyle(SOLID_LINE,0,NORM_WIDTH);li ne(0,0,0,479);lin e(0,0,639,0);lin e(639,0,639,479);lin e(0,479,639,479);line(0,PAOGAO-PANHOU-40,450,PAOGAO-PANHOU-40); /* 黃金線(xiàn) */ settextstyle(0,0,1);/*線(xiàn)上字*/outtextxy(250, PAO
9、GAO-PANHOU-50, Press ANY Key to EXIT !); zimu();/*畫(huà)柱*/void draw pillar( pillars p) int x,y,m ount;x=p.x;y=p.y;mount=p.amount;setfillstyle(SOLID_FILL,BROWN); bar(x,(y-mou nt* PANHOU-20),x+5,y); bar(x-45,y,x+55,y+5); void drawmat(char *mat, int matsize,i nt x,i nt y,i nt color)/*依次:字模指針、點(diǎn)陣大小、起始坐標(biāo)(x,y)
10、、顏色*/int i,j,k, n;n=(matsize-1)/8+1;for(j=0;jmatsize;j+)for(i=0;i n;i+)for(k=0;kk)/* 測(cè)試為 1 的位則顯示 */putp ixel(x+i*8+k,y+j,color); void draw pan(pans p ,i nt x,i nt y)setfillstyle(SOLID_FILL,LIGHTGRAY); bar(x-(5+5* p),y- PANHOU+1,x+(5+5* p),y); setli nestyle(SOLID_LINE,O,NORM_WIDTH); setcolor(BLACK);l
11、in e(x-(5+5* p),y,x+(5+5* p),y);lin e(x-(5+5* p),y+1,x+(5+5* p),y+1);void clear pan(pans p ,i nt x,i nt y)setfillstyle(SOLID_FILL,BLACK); bar(x-(5+5* p),y- PANHOU,x+(5+5* p),y);void drawpps()/*畫(huà)裝盤(pán)的臺(tái)柱*/p illars p;int i,j;int x,y,m ount;for(i=1;i=3;i+)x = p .x;y = p .y;mount = p .am ount;drawpillar(p)
12、;/* 畫(huà)臺(tái)柱 */for(j=1; j=15) clearprocess();/* 清除步驟提示 */ movecount = movecount%15+1; /* 模 20+1*/ setcolor(RED);/*輸出移動(dòng)過(guò)程*/settextstyle(TRI PLEX_FONT, HORIZ_DIR, 1); outtextxy(560,30+movecou nt*10,a);outtextxy(580,30+movecou nt*10,-); outtextxy(620,30+movecou nt*10,b);setfillstyle(SOLID_FILL,BLACK);/涂黑 _
13、重畫(huà) */ bar(3, pillar1.y- PANHOU*19-2O,584,412); drawpps();/* 重畫(huà) */acti on (data, pillarifrom, pillarito);/*此處添加動(dòng)畫(huà)函數(shù)*/pillarito.amount+;/* 入棧 */mountt = pillarito.amount;/*刷新數(shù)量 */*重畫(huà)*/p illarito. panmoun tt = data;draw pp s();void clear pro cess()int i;setfillstyle(SOLID_FILL,BLACK);for(i=0;i=16;i+)ba
14、r(545,30+i*10,638,40+i*10);sdelay(1);/* 動(dòng)畫(huà)延遲 n 個(gè)(1/18.2)秒*/整數(shù)1代表(1/18.2)秒*/ void sdelay(i nt delay_t) clock_t start_time ;start_time=clock();while(clock()-start_time)delay_t) ; /* 循環(huán)空語(yǔ)句 */void action(pans pan,pillars fromp,pillars top)/* 移動(dòng)動(dòng)畫(huà) */float x1,y1,x2,y2;float p ,q,a;int x,y,temp;/*整形變量用與當(dāng)前幀
15、*/x1 = (float)(fro mp. x);y1 = (float)(fro mp.y - fromp .amou nt* PANHOU -20);/*PANHOU為盤(pán)厚常數(shù),減20處理,以便避開(kāi)柱子*/x2 = (float)(t op .X);y2 = (float)(to p.y - top .amou nt* PANHOU);q = -sqrt(y1- PAOGAO)/(y2-PAOGAO); /* 此處注意產(chǎn)生增根 */if(1-q)/*除數(shù)不為0*/a = (x1 - x2*q)/(1-q);elsea = (x1+x2)/2.0;p = (y2-PAOGAO)/(x2-a
16、)/(x2-a);/* 除以平方 */if(x1 = x2)for(x=floor(x1+0.5); xfloor(x2+0.5); x=x- 7 ) if(kbhit() exit(); /* 用戶(hù)按 ESC則退出 */ y = floor( p*(x-a)*(x-a)+PAOGAO)+0.5); draw pan(pan, x,y);sdelay(1);clearpan(pan,x,y);/* 清除軌跡 */*完成! */void fini sh()getch();closegra ph(); 程序運(yùn)行效果圖Ad2+J+J+J個(gè)人實(shí)驗(yàn)小結(jié)通過(guò)本次實(shí)驗(yàn),我學(xué)會(huì)了熟悉并掌握問(wèn)題規(guī)約法的原理、實(shí)質(zhì)和規(guī)約過(guò)程,理 解了規(guī)約圖的表示方法,熟悉并掌握遞歸解決問(wèn)題的思想。使我的軟件編程思維 能力得到了很大的提升,使我的自身能力有了長(zhǎng)足的進(jìn)步。讀書(shū)的好處1、行萬(wàn)里路,讀萬(wàn)卷書(shū)。2、書(shū)山有路勤為徑,學(xué)海無(wú)涯苦作舟。3、讀書(shū)破萬(wàn)卷,下筆如有神達(dá)爾文4、我所學(xué)到的任何有價(jià)值的知識(shí)都是由自學(xué)中得來(lái)的。5、少壯不努力,老大徒悲傷6、黑發(fā)不知勤學(xué)早,白首方悔讀書(shū)遲顏真卿7、寶劍鋒從磨礪出,梅花香自苦寒來(lái)。8、讀書(shū)要三到:心
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 專(zhuān)業(yè)電腦交易協(xié)議格式(2024年)版A版
- 2025年度跨境電商平臺(tái)產(chǎn)品區(qū)域代理合同協(xié)議書(shū)4篇
- 科技前沿:資金驅(qū)動(dòng)創(chuàng)新
- 2025年度倉(cāng)儲(chǔ)物流場(chǎng)地租賃保證金三方服務(wù)協(xié)議4篇
- 2025年度柴油運(yùn)輸合同書(shū)(智能化物流服務(wù))4篇
- 2025年度綠色環(huán)保型鏟車(chē)租賃合作協(xié)議4篇
- 2025年智能餐飲連鎖店合作協(xié)議范本3篇
- 2025年度特色面館連鎖品牌加盟管理規(guī)范合同范本3篇
- 2025年度商業(yè)地產(chǎn)項(xiàng)目場(chǎng)地合作運(yùn)營(yíng)協(xié)議4篇
- 專(zhuān)業(yè)電線(xiàn)電纜供應(yīng)協(xié)議模板2024版
- 【公開(kāi)課】同一直線(xiàn)上二力的合成+課件+2024-2025學(xué)年+人教版(2024)初中物理八年級(jí)下冊(cè)+
- 高職組全國(guó)職業(yè)院校技能大賽(嬰幼兒照護(hù)賽項(xiàng))備賽試題庫(kù)(含答案)
- 2024年公安部直屬事業(yè)單位招聘筆試參考題庫(kù)附帶答案詳解
- NB-T 47013.15-2021 承壓設(shè)備無(wú)損檢測(cè) 第15部分:相控陣超聲檢測(cè)
- 裝飾工程施工技術(shù)ppt課件(完整版)
- SJG 05-2020 基坑支護(hù)技術(shù)標(biāo)準(zhǔn)-高清現(xiàn)行
- 汽車(chē)維修價(jià)格表
- 10KV供配電工程施工組織設(shè)計(jì)
- 終端攔截攻略
- 藥物外滲處理及預(yù)防【病房護(hù)士安全警示教育培訓(xùn)課件】--ppt課件
評(píng)論
0/150
提交評(píng)論