从词法上讲C ++中的下一个排列

在这里,我们将看到如何在C ++中按字典顺序生成字符串的下一个排列。从字典上讲,下一个排列基本上是较大的排列。例如,“ ACB”的下一个将是“ BAC”。在某些情况下,按字典顺序不存在下一个排列,例如“ BBB”或“ DCBA”等。

在C ++中,我们可以使用称为next_permutation()的库函数来实现。它存在于算法头文件中。

示例

#include <iostream>
#include <algorithm>
using namespace std;
main() {
   string s = "DBAC";
   for(int i = 0; i<5; i++) {
      bool val = next_permutation(s.begin(), s.end());
      if (val == false) {
         cout << "No next permutation" << endl;
         break;
      } else
      cout << "Next: " << s << endl;
   }
}

输出结果

Next: DBCA
Next: DCAB
Next: DCBA
No next permutation