#10040. 火车编组
火车编组
✅ 题目描述
货运火车需要在编组站根据每节车厢的目的地重新排列顺序。假设最初车厢编号为 1, 2, 3, ..., n
,目标是通过一系列“进栈”、“出栈”操作,使车厢顺序变为给定的目标顺序。
小明发现可以使用栈的方式完成这个过程。每节车厢按顺序(1 到 n)进入编组站(即栈),通过适当的进栈(A)和出栈(B)操作,可以得到目标顺序。
你的任务是输出一串由字符 A
和 B
组成的字符串,表示进栈出栈的顺序,使得最终出栈序列为目标排列。
输入格式
第 1 行:一个正整数 ,表示车厢数量。 第 2 行: 个整数,表示车厢最终排列顺序,是 到 的一个排列。
输出格式
一行仅包含由大写字母 A
和 B
构成的字符串,表示进栈和出栈的操作序列。
样例输入 1
4
3 2 4 1
样例输出 1
AAABBABB
💡 思路解析
我们用一个辅助栈 S
,模拟如下过程:
- 从 1 到 n 顺序把车厢压入栈(每次输出
A
)。 - 每压一次,就检查栈顶是否和目标序列当前的车厢编号相同。如果相同就弹出(输出
B
),移动目标指针继续判断栈顶。 - 最后如果能完全匹配目标序列,就输出操作序列。