算法进阶指南:0x18:双栈排序

2023-10-29

Tom 最近在研究一个有趣的排序问题。

通过 2 个栈 S1 和 S2,Tom 希望借助以下 4 种操作实现将输入序列升序排序。

操作 a

如果输入序列不为空,将第一个元素压入栈 S1

操作 b

如果栈 S1 不为空,将 S1 栈顶元素弹出至输出序列

操作 c

如果输入序列不为空,将第一个元素压入栈 S2

操作 d

如果栈 S2 不为空,将 S2 栈顶元素弹出至输出序列

如果一个 1∼n 的排列 P 可以通过一系列操作使得输出序列为 1,2,…,(n−1),n,Tom 就称 P 是一个”可双栈排序排列”。

例如 (1,3,2,4) 就是一个”可双栈排序序列”,而 (2,3,4,1) 不是。

下图描述了一个将 (1,3,2,4) 排序的操作序列:<a, c, c, b, a, d, d, b>

当然,这样的操作序列有可能有几个,对于上例 (1,3,2,4),<a, c, c, b, a, d, d, b>是另外一个可行的操作序列。

Tom 希望知道其中字典序最小的操作序列是什么。

输入格式

第一行是一个整数 n。

第二行有 n 个用空格隔开的正整数,构成一个 1∼n 的排列。

输出格式

输出共一行,如果输入的排列不是”可双栈排序排列”,输出数字 0。

否则输出字典序最小的操作序列,每两个操作之间用空格隔开&

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

算法进阶指南:0x18:双栈排序 的相关文章

随机推荐

  • Linux/Windows备份数据库

    使用场景基于SpringBoot 简单的记录下 比较粗糙 工具类 public static int backupMysql String host String root String pwd String dbName String b
  • 如何在 Linux 上安装、启动和卸载 Lotus Notes 8.5

    http tech ddvip com 2010 04 1271908410152075 html 安装之前的准备工作 在 Linux 客户机上安装 IBM Lotus Notes 8 5 之前 应了解以下信息 客户机配置要求 表 1 No
  • Spark

    1 Spark架构设计 1 1架构设计图 1 2 相关术语名词解释 1 RDD Resillient Distributed DataSet 弹性分布式数据集 是对数据集在Spark存储和计算过程中的一种抽象 是一组制度 可分区的分布式数据
  • 【Docker】docker bash: sudo: command not found

    1 背景 mac下安装了docker 然后用docker 安装了grafana软件 然后进入grafana base lcc lcc prometheus docker exec it 4b5f517f4340 bash grafana 4
  • 【经典】SpringBoot自定义配置信息

    当我们系统中为方便管理 会定义一些自定义配置项 方便系统的管理和维护 在SpringBoot中 有两种方式可以进行自定义配置 Value 进行单个属性的注入 ConfigurationProperties 类型安全加载 Value方式注入
  • C语言取出一个长整型数中的偶数并构成一个新数案例讲解

    思路分析 1 本题的难点在于 如何把一个长整型数中每一位上的数依次取出 可以使用while循环对整数中的每一位进行取模操作 取出最后一位数 然后把这个数保存到一个数组中 并用除法去掉最后一位数 循环遍历直到一个整数中的每一位都被取出并依次保
  • GitKraken中push时,报ssh key的错误

    问题 configured ssh key is in an invalid format please ensure that your key is valid and is an rsa type key 解决方案 1 GitKrak
  • 卓越性能代码_Win10如何开启卓越模式?学会输入这串代码,电脑性能大幅提升...

    自己的电脑性能如何总是被用户所关注的 那么今天就是来给大家介绍一个Win10的模式 输入一串代码后即可开启该模式 卓越模式 该模式开启之后 完全可以用来代替 高性能 模式 尤其是对于喜欢超频 玩硬件的用户来说还是比较推荐使用的 比较该模式下
  • 新手如何在IEEE上发表论文?

    IEEE 也就是美国电子与电器工程师学 Institute of Electrical and Electronics Engineers 是一个国际性的电子技术与信息科学工程师的学术组织 其会员人数超过40万人 遍布160多个国家 是世界
  • Spring Boot配置MySQL多数据源

    1 导读 在日常开发中我们都是以单个数据库进行开发 在小型项目中是完全能够满足需求的 但是 当我们牵扯到像淘宝 京东这样的大型项目的时候 单个数据库就难以承受用户的CRUD操作 那么此时 我们就需要使用多个数据源进行读写分离的操作 这种方式
  • 最快速度求两个数组之交集算法与hash

    一个题目 该题目来自58同城的二面 用最快速度求两个数组之交集算法 比如A 6 2 4 1 B 2 9 4 3 那么A B 2 4 算法一 在大多数情况 也就是一般的情况下 大家都能想出最暴力的解法 通常也就是采用遍历或者枚举的办法来解决问
  • SpringBoot使用log

    目录 简介 实现步骤 1 在 pom xml 文件中添加 lombak 依赖 2 配置 application properties 日志设置 3 在要使用日志的类上直接添加 Slf4j 注解 然后就可以直接使用 log xxx 方法记录日
  • ABAP对excel的操作(为单元格设置公式)

    文章目录 前言 一 效果 二 代码 前言 给单元格设置公式 一 效果 运行程序 执行 excel效果 二 代码 代码如下 示例 Report ZDEMO EXCEL6
  • 编程职业的乐趣

    编程职业的乐趣 美酒的酿造需要年头 美食的烹饪需要时间 片刻等待 更多美味 更多享受 Good cooking takes time If you are made to wait it s to serve you better and
  • C语言 创建简单结构体输入学生基本信息

    结构体 include
  • VM虚拟机怎么安装mac os?(全教程)

    网络上教程很多 大多数是缺这缺那的 基本上不完整的 我试了很多次看了好多文档才安装成功 现在把我安装成功的过程写下来让更多的人知道如何在windows虚拟机上安装苹果的Mac os 让大家避免走不需要走的路 保姆级教程 此方法我在三台不同配
  • 使用支持向量机进行航线预测————附Matlab代码

    使用支持向量机进行航线预测 附Matlab代码 随着交通运输的发展 航空公司需要提高飞行的效率和安全性 而飞行航线的规划是保证飞行效率和安全性的关键因素之一 因此 利用机器学习算法来预测航线 成为了一个热门的话题 其中 支持向量机 Supp
  • 绕过圆括号过滤实现XSS弹框

    用data协议
  • 思科实验9.网络层:PPP协议配置

    PPP协议配置 基础知识 常用命令 实验流程 目的 1 设计拓扑 2 配置主机IP地址 3 配置路由器 4 设置PPP协议 5 验证主机连通 基础知识 PPP协议即点对点协议 是在点对点连接上传输多协议数据包提供了一个标准方法 是一种点到点
  • 算法进阶指南:0x18:双栈排序

    Tom 最近在研究一个有趣的排序问题 通过 2 个栈 S1 和 S2 Tom 希望借助以下 4 种操作实现将输入序列升序排序 操作 a 如果输入序列不为空 将第一个元素压入栈 S1 操作 b 如果栈 S1 不为空 将 S1 栈顶元素弹出至输