题解 | #火车进站#

火车进站

https://www.nowcoder.com/practice/97ba57c35e9f4749826dc3befaeae109

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    // Write your code here
    // 深度优先遍历:终止条件 数据处理递归  数据还原(回溯)
    // shift 删除第一个,返回删除元素 (改变原数组)
    // unshift 首位增加一个元素   (改变原数组)
    // push尾部增加一个元素 (改变原数组)
    // pop尾部删除一个元素,返回删除元素(改变原数组
    let line1 = await readline()
    let line2 = await readline()
    let len = Number(line1);
    let arr = line2.split(" ").map(Number);
    let luxian = [];
    // arr所有的车  iList进站  oLIst出站
    function run(arr, iList, oLIst) {
        if (oLIst.length === len) {
            luxian.push(oLIst.join(" "));
            return;
        }
        //  进站
        if (arr.length) {
            iList.push(arr.shift());
            run(arr, iList, oLIst);
            arr.unshift(iList.pop()); // 数据还原
        }
        //  出站
        if (iList.length) {
            oLIst.push(iList.pop());
            run(arr, iList, oLIst);
            iList.push(oLIst.pop()); // 数据还原
        }
    }
    run(arr, [], []);
    // 输出
    luxian.sort().forEach((item) => {
        console.log(item);
    });
})();

全部评论

相关推荐

05-09 14:45
门头沟学院 Java
点赞 评论 收藏
分享
牛客928043833号:在他心里你已经是他的员工了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务