输出样例
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() 并输出,直至最后最大的一个。
方法二:思路同方法一,但自行编写计算一个当前字符串的下一个字典序排列。
设P是一个排列串:P = s[1]s[2]…s[n] = s[1]…s[j]…s[k]…s[n]