汉诺塔试验报告-源程序

汉诺塔试验报告-源程序

ID:35230351

大小:87.60 KB

页数:12页

时间:2019-03-22

汉诺塔试验报告-源程序_第1页
汉诺塔试验报告-源程序_第2页
汉诺塔试验报告-源程序_第3页
汉诺塔试验报告-源程序_第4页
汉诺塔试验报告-源程序_第5页
资源描述:

《汉诺塔试验报告-源程序》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、汉诺塔文档一、软件概述:汉诺塔(Hanoi)是一个古老的数学问题。相传在古印度的布拉玛婆罗门圣庙的僧侣在进行一种被称为汉诺塔的游戏,其装置是一块铜板,上而有三根奸(编号1、2、3),1杆上自下而上、由大到小按顺序串上64个金盘(如图,由于空间有限,只画了10个盘)。游戏的目标是把1杆上的金盘全部移到3杆上,并仍原有顺序叠好。条件是每次只能移动一个盘,并且在每次移动都不允许大盘移到小盘之上。现要求利用递归调用技术给出N个盘从1杆移到3杆的移动过程。图1汉诺塔问题2.1、算法:2.1.1:(递归算法)这个移

2、动过程很复杂与烦琐,但规律性却很强。使用递归调用技术来解决这个移动过程,先得找到一个递归调用模型。想要得到汉诺塔问题的简单解法,着眼点应该是移动A杆最底部的大盘,而不是其顶部的小盘。不考虑64个盘而考虑N个盘的一般情况。要想将A杆上的N个盘移至C杆,我们可以这样设想:1.以C盘为临时杆,从A杆将1至N-1号盘移至B杆。2.将A杆中剩下的第N号盘移至C杆。3.以A杆为临时杆,从B杆将1至N-1号盘移至C杆。2.1.2:(循环算法)在程序中开一个2维的数组iResultArray[][],由数学公式,移动N

3、个盘所需要的步骤是2AN-1步,通过计算算得这个步数,计入变量iStep,则iResultArray有2AN-1行,每行2个元素,其中第一个元素是源盘所在的轴号(用1,2,3表示),第二个元素是目的盘所在的轴号。为叙述方便,现假设盘子的数目有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移到没有盘子的轴上,然后将剩下的那组盘子移动到A上,而这一步又恰是第J-1个阶段的重演,但源轴号和目的轴号都有变。假设第1〜J-1个盘子己经被从原来的第il轴经过12轴最终移到了i3轴,则第J阶段为:1,将第J个盘子从第1轴移动到第i2轴,再将i3看作上一步的il,il看作上一步的i2,12看作上一步的i3,经过这样一个变化后重演第J-1阶段以前的工作。这个重演可以看作是对iResultArray数组中小于等于2A(iStep-l)的替换。从而实现重复算法。2.2界面实现在控制界而类M

5、yPanel中设置3*10的iDiskStackHH二维数组用以表示盘片的位置,假设iDiskStack[l][l]=10,则第1个轴上最底下位置上放着第10号盘片。(出于若盘片过多,运算量太大,则程序将无法终止,故只设最大为10个盘片)假设iDiskStack[2][10]=5,则第2个轴上最高的位置上放着第5号盘片,以此类推。在每输入一个新的盘片数N时(1

6、,3)的情求,则程序会搜索iDiskStackm里面下标最大的非0元素(即1号轴上最顶上的盘子)并将其移动到iDiskStack[3]里面下标最小的0元素(即1号轴上最顶上的盘子的紧挨着的上面一个位置),并调用paintlmmediately强制重绘屏幕。三、使用方法:3.1系统需求硬件:INTELPentiumIIPC或以上机型。软件:MicrosoftWindows98/ME/2000/XP/2003或LINUX等Java2sdk1.4.1版或以上3.2安装方法1,首先下载安装Java2sdkl.4

7、.1(如果已经正确安装该版本或以上版本的JSDK,则可跳到步骤3)2,打开Windows的系统变_fl属性页,在path中添加“C:j2sdkl.4.1bm;C:j2sdkl.4.1jrebiii”二项,在CLASSPATH添加“•;C:j2sdklAllib;C:j2sdkl.4.1jrelib”(其中(:勹28(&1.4.1是允¥&28业1.4.1在您硬盘上的安装目录)3,点击开始一运行一cmd(win98下是command)4,通过cd命令进入本程序所在的文件夹,这时如果敲入d

8、ir可以看到Hanoia.java文件5,敲入“javaHanoia”,回车(注意大小写)如果出现如下图形界而,则恭喜您!您己经正确安装!图2許次进入程序界面3.3运行方法1,正确安装后,您可以看到图22,在程序右上角的数字提示框中,输入一个1〜10之间的数(比如4),并点击“START!按钮图3准备就绪3,调节速率滑杆,您可以控制每步之间的延迟时间。滑杆越靠右,步骤就演示得越清晰。4,点击“SOLVE!”按钮,此时您可以看到程序在一步步地

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。