无锡阿福游戏:汉诺塔移动 (HANNUOTA.C)的源程序.这两天要用.谢谢!

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/30 02:05:15
8. 汉诺塔移动 (HANNUOTA.C)
功能描述:实现视觉效果(塔的移动)。
关键技术:动态显示塔的移动,算法和堆栈设计。
算法:
以三个盘子为例。要从源1移到目标3,需要借助中间2来过渡。一个可行的方案是:
1--à3 1-à2 3--à2 1----à3 2--à1 2--à3 1---à3
此时共移动7次,完成了三个盘子从源1到目标3的移动。
1-à3 表示将第一根针上的一个盘子(最上面的盘子)移动到第3根针上。
一般情况,为了将N个盘子从A经过B移动到C。可以先将N-1个盘子从A经过C移动到B,然后将A中剩下的一个盘子移动到C,最后再将N-1个盘子从B经过A移动到C。这样就将原来与N有关的问题变成了与N-1有关的问题。重复这个过程,每次N减1。最后当N=1时,直接移动该盘子就可以了。
定义过程MOVE(N,A,B,C)。将N个盘子从A经过B移动到C,根据上面讨论,该过程可分解为三步。
MOVE(N-1,A, C, B)
A-àC
MOVE(N-1, B ,A, C)
这是一个递归调用过程。

你去书店看一下,谭浩强的c程序设计里面有完整的程序代码