首页 > 试题广场 >

最小排列

[编程题]最小排列
  • 热度指数:2130 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
由数字 1 到 n 组成的一个序列我们称为一个 n 排列。对于两个不同的 n 排列 𝐴 = 𝑎1𝑎2 ... 𝑎𝑛 和 𝐵 = 𝑏1𝑏2 ... 𝑏𝑛 我们可以按字典序比较他们的大小:从前往后找到第一个两个排列中数字不同 的位置,即找到一个位置𝑝使得 𝑎1 = 𝑏1 ,  𝑎2 = 𝑏2 , ... , 𝑎𝑝−1 = 𝑏𝑝−1 ,  𝑎𝑝 ≠ 𝑏𝑝 ,若 𝑎𝑝 < 𝑏𝑝 ,我们 则称排列 𝐴 小于排列 𝐵 ,反之则 𝐴 大于 𝐵 。现在给出一个 n 排列,你需要选择排列中的两个不同的位置,然后交换这两个位置的数字, 你需要使得最后得到的排列尽量小。注意你必须进行一次且只能进行一次操作。

数据范围:

输入描述:
第一行包含一个数字 𝑛 ,表示排列的长度。
第二行包含 𝑛 个数字构成一个 𝑛 排列。     


输出描述:
输出一个 n 排列,表示能得到的最小的排列。
示例1

输入

3
3 2 1

输出

1 2 3
示例2

输入

4
2 1 4 3

输出

1 2 4 3

这道题你会答吗?花几分钟告诉大家答案吧!

问题信息

难度:
0条回答 2888浏览

热门推荐

通过挑战的用户

查看代码