其中一个算法思路:
将n个盘从A针移到D针可以分解为以下三个步骤:
1、将A针上x个盘借助C、D针先移到B针上;
2、把A针上剩下的n-x个盘借助C针移到D针上;
3、将B针上x个盘借助A、C针移到D针上。
上面第1步和第3步都是将x个盘从一个针借助其他两针移到另一个针上。实际上是本问题的递归。
第2步实质是n-x个盘的汉诺塔问题。也是一个递归。
当n=1和n=2时,成了汉诺塔问题。变形汉诺塔问题归要结底是汉诺塔问题的拼凑。不过最少的移动步骤并不唯一。
其中一个算法思路:
将n个盘从A针移到D针可以分解为以下三个步骤:
1、将A针上x个盘借助C、D针先移到B针上;
2、把A针上剩下的n-x个盘借助C针移到D针上;
3、将B针上x个盘借助A、C针移到D针上。
上面第1步和第3步都是将x个盘从一个针借助其他两针移到另一个针上。实际上是本问题的递归。
第2步实质是n-x个盘的汉诺塔问题。也是一个递归。
当n=1和n=2时,成了汉诺塔问题。变形汉诺塔问题归要结底是汉诺塔问题的拼凑。不过最少的移动步骤并不唯一。