题目描述:给定一个正整数N代表火车数量,0<N<10,接下来输入火车入站的序列,
一共N辆火车,每辆火车以数字1-9编号,火车站只有一个方向进出,同时停靠在火车站的列车中,
只有后进站的出站了,先进站的才能出站。
要求输出所有火车出站的方案,以字典序排序输出。
数据范围:1\le n\le 10\1≤n≤10
示例:输入:31 2 3复制输出:1 2 31 3 22 1 32 3 13 2 1复制说明:第一种方案:1进、1出、2进、2出、3进、3出第二种方案:1进、1出、2进、3进、3出、2出第三种方案:1进、2进、2出、1出、3进、3出第四种方案:1进、2进、2出、3进、3出、1出第五种方案:1进、2进、3进、3出、2出、1出请注意,[3,1,2]这个序列是不可能实现的。
let num = parseInt(readline()) // 3
let arr = readline().split(' ') // [1,2,3]solution(arr, num);
function solution(arr, num) {// arr 未驶进站台的火车let length = arr.length;let res = []; // 输出数组let inTrainArr = []; // 站中的火车let outTrainArr = []; // 驶出站台的火车helper(arr, num, inTrainArr, outTrainArr);res.sort();res.forEach((item) => {console.log(item.join(" "));});function helper(stand, n, inTrainArr, outTrainArr) {// 递归结束的条件是什么// 未驶进站台的火车 和 站台的火车都为空  即 驶出站台的火车数量 === nif (outTrainArr.length === n) {res.push([...outTrainArr]);}// 当火车还从没开始进来的时候if (stand.length === n) {inTrainArr.push(stand.shift());helper(stand, n, inTrainArr, outTrainArr);return;}// 当站外还有火车的时候if (stand.length > 0) {var cur = stand.shift();inTrainArr.push(cur);helper(stand, n, inTrainArr, outTrainArr);inTrainArr.pop();stand.unshift(cur);}// 当站内还有火车的时候if (inTrainArr.length > 0) {var cur = inTrainArr.pop();outTrainArr.push(cur);helper(stand, n, inTrainArr, outTrainArr);outTrainArr.pop();inTrainArr.push(cur);}}
}

js/javascript/JS/Javascript/JavaScript/Js-牛客系列之HJ77.火车进站相关推荐

  1. 【牛客 - 181D】小叶的巡查(树的直径,数学)

    题干: 8102年,牛客系列竞赛空前繁荣.为了更好地管理竞赛,小叶决定巡查于各大城市之间,体察民情.所以,从一个城市马不停蹄地到另一个城市成了小叶最常做的事情.小叶有一个钱袋,用于存放往来城市间的路费 ...

  2. Java算法:华为机试算法(下),华为算法Java版,牛客网华为算法73~108题

    接上篇:Java算法:华为机试算法(中),华为算法Java版,牛客网华为算法55~72题   HJ73 计算日期到天数转换 计算日期到天数转换 题目描述 根据输入的日期,计算是这一年的第几天.. 测试 ...

  3. 牛客在线编程-华为机试-中等

    牛客在线编程题目-华为机试-中等 题号 题目 知识点 难度 通过率 HJ16 购物单 动态规划 中等 21.21% HJ17 坐标移动 字符串 中等 24.79% HJ20 密码验证合格程序 数组 字 ...

  4. (python)牛客网(华为机试四)——较难

    本博客为博主解题的部分记录,由于均为自己写的,所以答案并非最优解,有很多地方可以优化. 其他题解合集: (python)牛客网(华为机试一)--入门 (python)牛客网(华为机试二)--简单 (p ...

  5. 在别人网页上运行js脚本_初始JavaScript,世界上最流行的语言之一

    1.JavaScript 是什么? JavaScript 是世界上最流行的语言之一,是一种运行在客户端的脚本语言 (Script 是脚本的意思) 脚本语言:不需要编译,运行过程中由 js 解释器( j ...

  6. JavaScript模板引擎Template.js基本使用详解

    template.js是一款JavaScript模板引擎,提供一套模板语法,简单好用,开发者可以写一个模板区块,每次传入的数据,生成对应数据产生的HTML片段,渲染不同的效果.官网:简洁语法版 htt ...

  7. JavaScript的初步探索(JS的入坑笔录)

    Java script简称js,是web学习的一个重要组成部分. 首先,Js是什么?JS简介: 这门语言可用于 HTML 和 web,更可广泛用于服务器.PC.笔记本电脑.平板电脑和智能手机等设备. ...

  8. 高性能JavaScript模板引擎template.js原理解析

    点击有惊喜 artTemplate是新一代javascript模板引擎,它在v8中的渲染效率可接近javascript性能极限,在chrome下渲染效率测试中分别是知名引擎Mustache与micro ...

  9. 【JavaScript】——浅谈js(JavaScript)

    [前言] 学习javascript的知识,原来在浏览网页时炫酷的动态效果就是js在幕后操作,js在Web开发中扮演着重要的角色,被广泛应用到各个领域:地图搜索,,用户注册.验证,网上购物.Web聊天- ...

最新文章

  1. python列表题目_day5.python列表练习题
  2. 干货 | 华尔街留下的指标之王(附代码展示)
  3. MySQL 5.6 Threadpool(优先队列)介绍及性能测试【转】
  4. 【深度学习】12张高清思维导图,总结深度学习
  5. C语言动态库libxxx.so的几种使用方法
  6. Android开机自动运行APP——BroadcastReceiver
  7. 如何使用jQuery将事件附加到动态HTML元素? [重复]
  8. spring整合cxf,轻松编写webService客户端、服务端
  9. 斐波那契数列c语言编程递归,C语言实现Fibonacci数列递归
  10. Python PTA实验课 输出星期名缩写+字典的创建
  11. java怪兽仙境攻略_《怪兽仙境》v1.20基础攻略
  12. 微信悄悄新出了个野心很大的App
  13. 深入学习Docker网络(看这篇就完全够了)
  14. 算法训练营学习笔记2
  15. Java高级面试-面经
  16. 第 5 章 ROS 常用组件 4 —— rosbag / rqt工具箱
  17. 高博第9讲project opencv viz模块
  18. 嵌入式linux项目案例,通过项目案例来学嵌入式
  19. 数据分析概述:在线销售数据分析、数据分析流程
  20. shopee店铺如何做好定位—扬帆际海

热门文章

  1. 中国全省份及其省区域码(sql)
  2. 数据仓库存储成本管理
  3. 百度收购YY,其实挺值得
  4. fis3静态资源库使用
  5. mysql数据恢复慢_故障分析 | 崩溃恢复巨慢原因分析
  6. 微信公众号全局返回码字典
  7. Warning: You are using macOS 13.We do not provide support for this pre-release version.
  8. 源码编译freeswitch-1.10.7遇到问题总结
  9. GPS坐标转百度坐标总结
  10. Android Device Administration 设备管理器——实现一键锁屏