一、题目描述
给定一个正整数N代表火车数量,0<N<10,接下来输入火车入站的序列,一共N辆火车,每辆火车以数字1-9编号,火车站只有一个方向进出,同时停靠在火车站的列车中,只有后进站的出站了,先进站的才能出站。
要求输出所有火车出站的方案,以字典序排序输出。
二、输入描述
第一行输入一个正整数N(0 < N <= 10),第二行包括N个正整数,范围为1到10。
三、输出描述
输出以字典序从小到大排序的火车出站序列号,每个编号以空格隔开,每个输出序列换行。
四、解题思路
- 首先通过输入获取火车的数量N和火车入站序列id;
- 创建一个结果集列表,用于存储所有火车出站的方案;
- 创建一个栈,用于模拟火车的进站和出站过程;
- 调用递归函数trainOut,开始计算火车出站的方案;
- 递归函数trainOut的参数包括当前考虑的火车编号i,当前栈的状态s,当前已出站的火车序列str,已出站的火车数量n;
- 如果所有火车均已出站(n等于火车数量N),将当前结果保存到结果集列表中;
- 如果栈非空,表示可以将栈顶火车出栈,将栈顶元素弹出,递归调用trainOut函数,更新已出站的火车序列和数量;
- 将弹出的火车编号加入结果序列str,并加上空格;
- 恢复栈