F. [信息与未来 2026 南京] 汉诺塔的乱序归位

    传统题 1000ms 256MiB

[信息与未来 2026 南京] 汉诺塔的乱序归位

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

同学们都非常熟悉汉诺塔问题:有三根柱子,分别用字母 A、B、C 表示。有 n 个圆盘,每个圆盘按大小编号 1,2,…,n (1 是最小的圆盘),并且要求三根柱子上的圆盘都要满足 “大盘在下,小盘在上” 的条件。

你的任务是从一个给定初始状态出发,把所有圆盘移动到柱子 C,移动时需要遵循如下规则:

每次只能移动一个圆盘,每次移动的圆盘必须是某个柱子最上面的那个; 任意时刻都不能将大圆盘放在小圆盘上方。 请你找到步数最少的移动方案。

输入格式

输入第一行一个整数 n,表示圆盘数量。 第二行一个长度为 n 的字符串 S,其中第 i 个字符表示编号为 i 的圆盘当前所在柱子 (A、B 或 C)。

输出格式

若最少步数为 k,则输出 k 行,每行的输出格式为 “X -> Y” (不含引号),代表把 X 柱子上的一个圆盘移到 Y 柱子。如果方案有多种,输出任意一种即可。

输入输出样例

2
BA
A -> C
B -> C

说明/提示

对于 40% 的数据,1≤n≤4。

对于 100% 的数据,1≤n≤15。

2026年南京"信息与未来"小学生编程思维展示活动

未参加
状态
已结束
规则
IOI
题目
6
开始于
2026-5-11 17:00
结束于
2026-6-22 9:00
持续时间
2.5 小时
主持人