#P3572. Hanoi Towers
Hanoi Towers
题目描述
汉诺塔问题()由三根柱子(分别命名为 、 和 )和 个不同直径的圆盘组成。初始时,所有圆盘按从大到小的顺序叠放在柱子 上,形成圆锥形结构。
合法移动规则
- 每次只能移动最顶端的圆盘,从一根柱子(源柱子)移动到另一根柱子(目标柱子)。
- 移动时,目标柱子必须满足以下条件之一:
- 空柱子
- 顶端圆盘的直径 > 当前移动的圆盘直径
- 用两个大写字母表示一次移动,例如 表示从柱子 移动到柱子 。
胜利条件
- 所有圆盘成功移动到柱子 ( 和 为空)或柱子 ( 和 为空)。
解题算法
- 策略列表:游戏共有 种可能的移动方式(、、、、、),按给定顺序排列。
- 移动规则:
- 每次选择策略列表中第一个合法的移动。
- 额外限制:不能连续两次移动同一个圆盘(例如,不能 后紧接着 )。
- 算法保证:该策略一定能解决汉诺塔问题。
问题要求
给定策略,计算最少需要多少步才能完成游戏。
输入格式
- 第一行:一个整数 (),表示圆盘数量。
- 第二行: 种移动策略,用空格分隔(例如:)。
输出格式
- 输出最少移动步数(不超过 )。
样例输入 1
3
AB BC CA BA CB AC
样例输出 1
7
样例输入 2
2
AB BA CA BC CB AC
样例输出 2
5
来源