文档介绍:数据结构实验课程设计报告
题 目:汉诺威塔
学生姓名:
学 号:
专业班级:
同组姓名:
指导教师:
设计时间: 大二上学期十七周
指导老师意见:
评定成绩: 签名: 日期:
目录
一. 设计目的与要求………………………………………………… 02
……………………………………………… 02
1。2设计要求……………………………………………… 02
二. 设计分析………………………………………………………… 02
………………………………………… 02
2.2算法分析……………………………………………… 03
2。3流程图………………………………………………… 06
…………………………………… 07
三. 设计实现………………………………………………………… 08
四. 心得体会………………………………………………………… 09
五。参考文献………………………………………………………… 10
1。1设计目的
随着计算机技术以及外围设备的发展,计算机在辅助设计制造,计算机教育,计算机信息化应用中,图形的作用和魅力愈加显现。
如何运用计算机技术、运用算法编程来优化解决低阶汉诺威塔问题对我们学生来说具有可实现和可操作性。本次课程设计的目的就是利用所学****到得算法知识和编程语言知识来解决、实现低阶汉诺威塔问题。
1。2设计要求
功能:编程序显示n(n〈=9)层汉诺威塔的调整过程。
分步实施:
,搭好框架,确定人机对话的界面,确定函数个数;
:实现5层汉诺威塔的调整过程;
:直至实现n=9时的情况。有兴趣的同学可以自己扩充系统功能。
要求:1)界面友好,函数功能要划分好
2)总体设计应画一流程图
3)程序要加必要的注释
4)要提供程序测试方案
5)程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。
2。设计分析
2。1汉诺威塔问题
n阶汉诺威塔问题:有三个柱子A, B, C.A柱子上叠放有n个盘子,每个盘子都比它下面的盘子要小一点,可以从上到下用1, 2, 。。。, ,把柱子A上的所有的盘子移动到柱子B上。移动条件为:
1、一次只能移一个盘子;
2、移动过程中大盘子不能放在小盘子上,只能小盘子放在大盘子上
如3阶汉诺塔的移动:A→C,A→B,C→B,A→C,B→A,B→C,A→C
2。2算法分析
为满足题目中盘子的移动问题,必须遵循的条件是:一次仅能移动一个盘,且不允许大盘放在小盘的上面。
设A上有n个盘子.
当n=1时,则将圆盘从A直接移动到C。
当n>=2时,移动的过程可分解为三个步骤:
1) 把A上的n—1个圆盘移到B上;
2) 把A上的一个圆盘移到C上;
3) 把B上的n-1个圆盘移到C上;其中第一步和第三步是相同的。
为了更清楚地描述算法,用图示法描述如下:
要将N个盘子从A杆上借助C杆移动到B杆上。这样移动N个盘子的工作就可以按照以下过程进行:
第一次调用递归
②将一个盘子从A移动到B上;