next_permutation是STL模板中用于求解排列数的一个算法。

今天看见了一个很新奇的东东 next_permutation ,就拿来试了试。

在 C++ Reference 中查看了一下 next_permutation 的函数声明:

#include <algorithm>
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.

可以看出 next_permutation 的返回类型为布尔型,意思是是否成功求解出当前排列的下一个排列。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main()
{
string str;
cin >> str;
sort(str.begin(), str.end());
cout << str << endl;
while (next_permutation(str.begin(), str.end()))
{
cout << str << endl;
}
return 0;
}

恩,就这么多了。

参考文献