出栈序列[1]

测试数据来自 system/2399

作业已超过截止时间,您无法递交本题目。

时间限制:1秒  内存限制:256M


【题目描述】

  输入序列中有 \(n\) 个正整数,栈 \(S\) 开始为空。你每次只可以进行下面两种操作之一:

  ① 将输入序列头端的数据移至 \(S\) 栈顶(进 \(S\) 栈);
  ② 将 \(S\) 栈顶元素输出并删除(退 \(S\) 栈)。

  当然,输入序列非空时才可进行 ① 操作,\(S\) 非空时才可进行 \(②\) 操作。当 \(①\) 和 \(②\) 的操作都无法执行时,一定会得到 \(n\) 个数据的一个输出序列。由于 ① 和 ② 混搭的次序不同,导致相应的输出序列也各不相同,

  请你求出能够得到的输出序列中字典序最小的一个序列。所谓字典序最小可以这样理解:首元素尽量小,在首元素最小的序列中第二元素尽可能小、在前 2 数据字典序最小的序列中,第三项尽可能小…,直至 \(n\) 项全部排完。

【输入格式】

  第一行仅有一个正整数 \(n\),表示输入序列中数据的个数。
  第二行就是输入序列中依次排列的 \(n\) 个数据,相邻两数据间有一个空格。

【输出格式】

  仅有一行 \(n\) 个数,就是字典序最小的输出序列,相邻整数间用一个空格隔开。

【输入输出样例1】

 Input

4
2 3 1 4

 Output

1 3 2 4

【数据限制】

  对于 \(30\%\) 的数据,\(0<n≤12\)。
  对于 \(60\%\) 的数据,\(0<n≤1000\)。
  对于 \(100\%\) 的数据,\(0<n≤100000\),其他数据在 int 范围。

【来源】

  Mr.he

栈与队列练习题

未认领
状态
已结束
题目
10
开始时间
2024-02-23 00:00
截止时间
2024-03-23 23:59
可延期
24.0 小时