Problem8407--STL 函数使用 —— prev_permutation()

8407: STL 函数使用 —— prev_permutation()

[Creator : ]
Time Limit : 1.000 sec  Memory Limit : 256 MiB

Description

【介绍】

【头文件】

Standard Template Library: Algorithms
#include<algorithm>

【作用】

Transform range to next permutationTransform range to previous permutation
Rearranges the elements in the range [first,last) into the previous lexicographically-ordered permutation.
default (1)	
template <class BidirectionalIterator>
  bool prev_permutation (BidirectionalIterator first,
                         BidirectionalIterator last );
custom (2)	
template <class BidirectionalIterator, class Compare>
  bool prev_permutation (BidirectionalIterator first,
                         BidirectionalIterator last, Compare comp);

【任务】

我们通过本题,掌握 prev_permutation() 函数使用方法。
给一个长度为 $n\ (1≤n≤9)$ 的数列,按照字典序从小到大输出全排列。

Input

第一行包括一个整数 $n\ (1≤n≤9)$。
第二行输入一个长度为 $n$ 的互不相同的整数 $a_i\ (−20≤a_i≤10)$。

Output

输出包括 $n!$ 行。
按照从大到小输出对应的字典序。

Sample 1 Input

3
1 3 4

Sample 1 Output

4 3 1
4 1 3
3 4 1
3 1 4
1 4 3
1 3 4

Sample 2 Input

4
5 7 1 9

Sample 2 Output

9 7 5 1
9 7 1 5
9 5 7 1
9 5 1 7
9 1 7 5
9 1 5 7
7 9 5 1
7 9 1 5
7 5 9 1
7 5 1 9
7 1 9 5
7 1 5 9
5 9 7 1
5 9 1 7
5 7 9 1
5 7 1 9
5 1 9 7
5 1 7 9
1 9 7 5
1 9 5 7
1 7 9 5
1 7 5 9
1 5 9 7
1 5 7 9

Source/Category