天天看点

汉诺塔问题 一、问题 二、问题分析 三、解法方案 四、解法方案 五、源代码 六、程序运行效果

汉诺塔问题

      古代有一个梵塔,塔内有3个座分别为A,B,C,开始时A座上有64个盘子,盘子大小不等,大的在下面,小的在上面(如下图所示)。有一个老和尚想把这64个盘子,从A盘移动到C盘,但每次只允许移动一个盘子,且在移动过程中在3个座上都需要始终保持大盘在下面,小盘在下。在移动过程中可以利用B座,要求编程实现,打印出移动方案。

汉诺塔问题 一、问题 二、问题分析 三、解法方案 四、解法方案 五、源代码 六、程序运行效果

将所有的盘子从A盘移动到C盘

A.每次只允许移动一个盘子;

B.在移动过程中,在3个座上都需要始终保持大盘在下面,小盘在下;

C.在移动过程中可以利用B座;

打印出移动方案

(1)将A座上n-1个盘子借助C座,先移动到B座上;

(2)把A座上所剩下的最后一个盘子移动到C座;

(3)将n-1个盘子从B座借助于A座,再移动到C座; 

1.目前只考虑打印移动3个盘子的移动方案;

因为64个盘子,移动的步骤有264-1,该数目相当相当大;

2.盘子的编号是从上到下,进行编号,分别是1,2,3等;

汉诺塔问题 一、问题 二、问题分析 三、解法方案 四、解法方案 五、源代码 六、程序运行效果