汉诺塔问题
核心思路:
要将 n 个圆盘从 A 移到 C,可拆为 3 步:
1.子问题 1:先将 A 柱上的「前 n-1 个圆盘」借助 C 柱,移动到 B 柱(此时 A 柱只剩最大的第 n 个圆盘);
2.直接移动:将 A 柱上剩下的「最大圆盘(第 n 个)」直接移动到 C 柱(最大圆盘无大小限制,可直接放);
3.子问题 2:再将 B 柱上的「n-1 个圆盘」借助 A 柱,移动到 C 柱(此时 C 柱已叠好所有圆盘)。
终止条件:当 n=1 时(只有 1 个圆盘),直接从 A 移到 C,无需递归
要将 n 个圆盘从 A 移到 C,可拆为 3 步:
1.子问题 1:先将 A 柱上的「前 n-1 个圆盘」借助 C 柱,移动到 B 柱(此时 A 柱只剩最大的第 n 个圆盘);
2.直接移动:将 A 柱上剩下的「最大圆盘(第 n 个)」直接移动到 C 柱(最大圆盘无大小限制,可直接放);
3.子问题 2:再将 B 柱上的「n-1 个圆盘」借助 A 柱,移动到 C 柱(此时 C 柱已叠好所有圆盘)。
终止条件:当 n=1 时(只有 1 个圆盘),直接从 A 移到 C,无需递归
全部评论
相关推荐
查看29道真题和解析