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):