1,汉诺塔
游戏规则:
将塔座A上的n个圆盘移至塔座C上,并仍按同样顺序叠排,圆盘移动时必须遵循下列规则:
(1)每次只能移动一个圆盘;
(2)圆盘可以插在A、B和C中的任一塔座上;
(3)任何时刻都不能将一个较大的圆盘压在较 小的圆盘之上。
问题分析:
可以用分治思想来解决这个问题:
假如盘数为n,用C柱做过渡,将A柱上的n-1个盘子移到B柱上;再将A上最大的那个盘子移到C上,最后用A柱做过渡,把B上的n-1个盘子移到C上。
递归的结束条件是:
当n=1时,即只有一个盘子时,只需将编号为1的圆盘从塔座A直接移至塔座C上即可,下面代码用输出来代替移动。
代码如下:
#include<stdio.h>
void hanoi(int n, char x, char y, char z)
{
if (n ==