题解 | #火车进站#
火车进站
https://www.nowcoder.com/practice/97ba57c35e9f4749826dc3befaeae109
const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); /** * 要求 * 字典序列就是 从小到大排序 * 栈: 先进后出,后进先出,出口和入口一样,只有栈顶 * 火车编号: 1~9 * 求所有火车出站方案,并以字典序列输出 * * 分析 * */ let [row, num, trains] = [0, 0, undefined] rl.on('line', function (line) { row++ if(row === 1){ // 保存火车数量 num = Number(line) }else if(row === 2){ // 保存所有火车 trains = line.split(' ').map(Number) // 保存序列 const res = [] function dfs(list, inL, outL){ // 保存一个出栈序列 if(outL.length === num){ res.push(outL.join(' ')) return } // 如果站外还有列车,就可以选择进站 if(list.length){ inL.push(list.shift()) dfs(list, inL, outL) list.unshift(inL.pop()) } // 如果站内还有列车就可以选择出站 if(inL.length){ outL.push(inL.pop()) dfs(list, inL, outL) inL.push(outL.pop()) } } dfs(trains, [], []) res.sort().forEach(item=>console.log(item)) } });