漢諾塔試驗報告-源程序

漢諾塔試驗報告-源程序

ID:35230351

大小:87.60 KB

頁數(shù):12頁

時間:2019-03-22

漢諾塔試驗報告-源程序_第1頁
漢諾塔試驗報告-源程序_第2頁
漢諾塔試驗報告-源程序_第3頁
漢諾塔試驗報告-源程序_第4頁
漢諾塔試驗報告-源程序_第5頁
資源描述:

《漢諾塔試驗報告-源程序》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。

1、漢諾塔文檔一、軟件概述:漢諾塔(Hanoi)是一個古老的數(shù)學(xué)問題。相傳在古印度的布拉瑪婆羅門圣廟的僧侶在進(jìn)行一種被稱為漢諾塔的游戲,其裝置是一塊銅板,上而有三根奸(編號1、2、3),1桿上自下而上、由大到小按順序串上64個金盤(如圖,由于空間有限,只畫了10個盤)。游戲的目標(biāo)是把1桿上的金盤全部移到3桿上,并仍原有順序疊好。條件是每次只能移動一個盤,并且在每次移動都不允許大盤移到小盤之上。現(xiàn)要求利用遞歸調(diào)用技術(shù)給出N個盤從1桿移到3桿的移動過程。圖1漢諾塔問題2.1、算法:2.1.1:(遞歸算法)這個移

2、動過程很復(fù)雜與煩瑣,但規(guī)律性卻很強。使用遞歸調(diào)用技術(shù)來解決這個移動過程,先得找到一個遞歸調(diào)用模型。想要得到漢諾塔問題的簡單解法,著眼點應(yīng)該是移動A桿最底部的大盤,而不是其頂部的小盤。不考慮64個盤而考慮N個盤的一般情況。要想將A桿上的N個盤移至C桿,我們可以這樣設(shè)想:1.以C盤為臨時桿,從A桿將1至N-1號盤移至B桿。2.將A桿中剩下的第N號盤移至C桿。3.以A桿為臨時桿,從B桿將1至N-1號盤移至C桿。2.1.2:(循環(huán)算法)在程序中開一個2維的數(shù)組iResultArray[][],由數(shù)學(xué)公式,移動N

3、個盤所需要的步驟是2AN-1步,通過計算算得這個步數(shù),計入變量iStep,則iResultArray有2AN-1行,每行2個元素,其中第一個元素是源盤所在的軸號(用1,2,3表示),第二個元素是目的盤所在的軸號。為敘述方便,現(xiàn)假設(shè)盤子的數(shù)目有4個。則可分解為:第一階段:將1號盤從1軸移至2軸;第二階段:將2號盤從1軸移至3軸,將1號盤從2軸移至3軸;第三階段:將3號盤從1軸移至2軸,將1,2號盤從3軸移至2軸;第四階段:將4號盤從1軸移至3軸,將1,2,3號盤從2軸移至3軸。對于第J個階段,都是將1軸中

4、的可以移動的盤子A移到?jīng)]有盤子的軸上,然后將剩下的那組盤子移動到A上,而這一步又恰是第J-1個階段的重演,但源軸號和目的軸號都有變。假設(shè)第1?J-1個盤子己經(jīng)被從原來的第il軸經(jīng)過12軸最終移到了i3軸,則第J階段為:1,將第J個盤子從第1軸移動到第i2軸,再將i3看作上一步的il,il看作上一步的i2,12看作上一步的i3,經(jīng)過這樣一個變化后重演第J-1階段以前的工作。這個重演可以看作是對iResultArray數(shù)組中小于等于2A(iStep-l)的替換。從而實現(xiàn)重復(fù)算法。2.2界面實現(xiàn)在控制界而類M

5、yPanel中設(shè)置3*10的iDiskStackHH二維數(shù)組用以表示盤片的位置,假設(shè)iDiskStack[l][l]=10,則第1個軸上最底下位置上放著第10號盤片。(出于若盤片過多,運算量太大,則程序?qū)o法終止,故只設(shè)最大為10個盤片)假設(shè)iDiskStack[2][10]=5,則第2個軸上最高的位置上放著第5號盤片,以此類推。在每輸入一個新的盤片數(shù)N時(1

6、,3)的情求,則程序會搜索iDiskStackm里面下標(biāo)最大的非0元素(即1號軸上最頂上的盤子)并將其移動到iDiskStack[3]里面下標(biāo)最小的0元素(即1號軸上最頂上的盤子的緊挨著的上面一個位置),并調(diào)用paintlmmediately強制重繪屏幕。三、使用方法:3.1系統(tǒng)需求硬件:INTELPentiumIIPC或以上機型。軟件:MicrosoftWindows98/ME/2000/XP/2003或LINUX等Java2sdk1.4.1版或以上3.2安裝方法1,首先下載安裝Java2sdkl.4

7、.1(如果已經(jīng)正確安裝該版本或以上版本的JSDK,則可跳到步驟3)2,打開Windows的系統(tǒng)變_fl屬性頁,在path中添加“C:j2sdkl.4.1bm;C:j2sdkl.4.1jrebiii”二項,在CLASSPATH添加“?;C:j2sdklAllib;C:j2sdkl.4.1jrelib”(其中(:勹28(&1.4.1是允¥&28業(yè)1.4.1在您硬盤上的安裝目錄)3,點擊開始一運行一cmd(win98下是command)4,通過cd命令進(jìn)入本程序所在的文件夾,這時如果敲入d

8、ir可以看到Hanoia.java文件5,敲入“javaHanoia”,回車(注意大小寫)如果出現(xiàn)如下圖形界而,則恭喜您!您己經(jīng)正確安裝!圖2許次進(jìn)入程序界面3.3運行方法1,正確安裝后,您可以看到圖22,在程序右上角的數(shù)字提示框中,輸入一個1?10之間的數(shù)(比如4),并點擊“START!按鈕圖3準(zhǔn)備就緒3,調(diào)節(jié)速率滑桿,您可以控制每步之間的延遲時間?;瑮U越靠右,步驟就演示得越清晰。4,點擊“SOLVE!”按鈕,此時您可以看到程序在一步步地

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。