Problem8406--STL 函数使用 —— next_permutation()

8406: STL 函数使用 —— next_permutation()

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

Description

【介绍】

【头文件】

Standard Template Library: Algorithms
#include<algorithm>

【作用】

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

【任务】

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

Input

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

Output

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

Sample 1 Input

3
3 2 1

Sample 1 Output

1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

Sample 2 Input

4
5 7 1 9

Sample 2 Output

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

Source/Category