next_permutation()算法将区间内容转化为下一种唯一的排序方式。对于字符串,字符串按照递增顺序进行。如果成功,该算法返回true;如果区间已经处于最后的序列中,则返回false。要得到区间的所有组合顺序,所以字符串要从最初(排完序)的顺序开始,为此本程序从sort后的字符序列开始。
#include<iostream>
#include<string>
#include<algorithm>
int main()
{
using namespace std;
string letters;
cout << "Enter the letter grouping(quit to quit): ";
while (cin >> letters && letters != "quit")
{
cout << "Permutations of " << letters << endl;
sort(letters.begin(), letters.end());
cout << letters << endl;
while (next_permutation(letters.begin(), letters.end()))
cout << letters << endl;
cout << "Enter next sequence(quit to quit): ";
}
system("pause");
return 0;
}
Enter the letter grouping(quit to quit): abbc
Permutations of abbc
abbc
abcb
acbb
babc
bacb
bbac
bbca
bcab
bcba
cabb
cbab
cbba
Enter next sequence(quit to quit):