c++ - next_permutation 返回奇怪的结果

标签 c++ stl permutation

我试图找到给定字符列表的所有排列,在本例中为“eta”

std::string s="eta";
do
{
    std::cout<<s<<std::endl;

}while(std::next_permutation(s.begin(),s.end()));

我将得到以下输出:

eta
tae
tea

但如果我改变一件事

std::string s="eta";

std::string s="aet";

现在输出变成了

aet
ate
eat
eta
tae
tea

这是我期望的正确排列数; 那么当“乱序”字符串按字母顺序排列时,显然会发生一些不同的事情吗?

或者造成这种歧义的原因是什么?

最佳答案

next_permutation 将序列更改为所有排列的排序顺序中的下一个排列。因此,如果您从不是字典顺序中第一个的排列开始,您将在 next_permutation 返回 false 之前仅获得所有排列的一部分。

关于c++ - next_permutation 返回奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14141128/

相关文章:

c++ - 如何在 C++ 中读取不断增长的文本文件?

c++ - QTableWidget,居中cellWidgets

objective-c - 如何在不实际更改的情况下重新排列 char* 的开头和结尾(索引方式)?

java - 如何从这个正则表达式生成所有可能的数字?

c++ - Std List、Vector、Map 等占用的空闲内存

Haskell 排列库函数 - 请澄清一下?

c++ - 使用 RcppArmadillo 修改输入

c++ - std::swap 是否保证通过 ADL 找到非成员交换?

c++ - 在学习 BOOST 替代品之前,我应该精通 STL 库吗?

c++ - STL,减少数组,C++