注意:
(1)字符串不含重复元素。
(2)这里初始输入的字串不一定是排列的有序集合中最小的那个,即使不是最小的那个,输出也一定要按照从小
到大的顺序输出。
输出格式
字典序的每个排列,按序号输出。
输入样例
3
214
输出样例
1 124
2 142
3 214
4 241
5 412
6 421
提示
这里两个办法来输出字典序的所有排列。
方法一:
可以用STL的next_permutation()函数,标准库全排列next_permutation()的返回值:
bool类型。
假设数列:d1d2d3d4…… 范围由[first,last)标记,调用next_permutation使数列
逐次增大,这个递增过程按照字典序。
C++ Reference中next_permutation的函数声明如下:
#include
bool next_permutation( iterator start, iterator end );
The next_permutation() function attempts to transform the given range
of elements [start,end) into the next lexicographically greater permutation
of elements. If it succeeds, it returns true, otherwise, it returns false.
所以,将输入的数字序列用sort()或qsort()排下序,先找到最小的字典序排列,然后不断
调用next_permutation() 并输出,直至最后最大的一个。
方法二:思路同方法一,但自行编写计算一个当前字符