#10040. 火车编组

火车编组

✅ 题目描述

货运火车需要在编组站根据每节车厢的目的地重新排列顺序。假设最初车厢编号为 1, 2, 3, ..., n,目标是通过一系列“进栈”、“出栈”操作,使车厢顺序变为给定的目标顺序。

小明发现可以使用栈的方式完成这个过程。每节车厢按顺序(1 到 n)进入编组站(即栈),通过适当的进栈(A)和出栈(B)操作,可以得到目标顺序。

你的任务是输出一串由字符 AB 组成的字符串,表示进栈出栈的顺序,使得最终出栈序列为目标排列。


输入格式

第 1 行:一个正整数 nn,表示车厢数量。(1n100)(1 \leq n \leq 100) 第 2 行:nn 个整数,表示车厢最终排列顺序,是 11nn 的一个排列。


输出格式

一行仅包含由大写字母 AB 构成的字符串,表示进栈和出栈的操作序列。


样例输入 1

4
3 2 4 1

样例输出 1

AAABBABB

💡 思路解析

我们用一个辅助栈 S,模拟如下过程:

  • 从 1 到 n 顺序把车厢压入栈(每次输出 A)。
  • 每压一次,就检查栈顶是否和目标序列当前的车厢编号相同。如果相同就弹出(输出 B),移动目标指针继续判断栈顶。
  • 最后如果能完全匹配目标序列,就输出操作序列。