网站大量收购闲置独家精品文档,联系QQ:2885784924

汉诺塔试验报告_源程序.docx

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汉诺塔试验报告_源程序

汉诺塔文档 一、软件概述: 汉诺塔(Hanoi)是一个古老的数学问题。相传在古印度的布拉玛婆罗门圣庙的僧侣在进行 一种被称为汉诺塔的游戏,其装置是一块铜板,上而有三根奸(编号1、2、3), 1杆上自下 而上、由大到小按顺序串上64个金盘(如图,由于空间有限,只画了 10个盘)。游戏的目 标是把1杆上的金盘全部移到3杆上,并仍原有顺序叠好。条件是每次只能移动一个盘,并 且在每次移动都不允许大盘移到小盘之上。现要求利用递归调用技术给出N个盘从1杆移 到3杆的移动过程。 图1汉诺塔问题 2.1、算法: 2.1.1:(递归算法) 这个移动过程很复杂与烦琐,但规律性却很强。使用递归调用技术来解决这个移动过程,先 得找到一个递归调用模型。想要得到汉诺塔问题的简单解法,着眼点应该是移动A杆最底 部的大盘,而不是其顶部的小盘。不考虑64个盘而考虑N个盘的一般情况。要想将A杆上 的N个盘移至C杆,我们可以这样设想: 以C盘为临时杆,从A杆将1至N-1号盘移至B杆。 将A杆中剩下的第N号盘移至C杆。 以A杆为临时杆,从B杆将1至N-1号盘移至C杆。 2.1.2:(循环算法) 在程序中开一个2维的数组iResultArray[][],由数学公式,移动N个盘所需要的步骤是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轴中的可以移动的盘子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界面实现 在控制界而类MyPanel中设置3*10的iDiskStack HH二维数组用以表示盘片的位置,假设 iDiskStack[l][l]=10,则第1个轴上最底下位置上放着第10号盘片。(出于若盘片过多,运 算量太大,则程序将无法终止,故只设最大为10个盘片)假设iDiskStack[2][10]=5,则第 2个轴上最高的位置上放着第5号盘片,以此类推。在每输入一个新的盘片数N时 (1N=10),程序会初始化1?N号盘片的位置。并通过函数MoveStep ()来控制每步的情 况。比如程序在运行期间,发出一个一 MoveStep(l,3)的情求,则程序会有哪些信誉好的足球投注网站iDiskStackm 里面下标最大的非0元素(即1号轴上最顶上的盘子)并将其移动到iDiskStack[3]里面下 标最小的0元素(即1号轴上最顶上的盘子的紧挨着的上面一个位置),并调用 paintlmmediately强制重绘屏幕。 三、使用方法: 3.1系统需求 硬件:INTEL Pentium II PC或以上机型。 软件:Microsoft Windows 98/ME/2000/XP/2003 或 LINUX 等 Java 2 sdk 1.4.1 版或以上 3.2安装方法 首先下载安装Java2sdkl.4.1 (如果已经正确安装该版本或以上版本的JSDK,则可跳到 步骤3) 2,打开Windows的系统变_fl属性页,在path中添加 “C:\j2sdkl.4.1\bm;C:\j2sdkl.4.1\jre\biii” 二项,在CLASSPATH添加 “?;C:\j2sdklAl\lib;C:\j2sdkl.4.1\jre\lib” (其中(:勹28(1.4.1是允¥2 8业1.4.1在您硬盘上的安装目录) 3,点击开始一运行一cmd (win98下是command) 4,通过cd命令进入本程序所在的文件夹,这时如果敲入dir可以看到Hanoia.java文件 5,敲入“javaHanoia”,回车(注意大小写) 如果出现如下图形界而,则恭喜您!您己经正确安装! 图2許次进入程序界面 3.3运行方法 正确安装后,您可以看到图2 在程序右上角的数字提示框中,输入一个1?10之间的数(比如4),并点击“START! 按钮

文档评论(0)

wuyoujun92 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档