我试图找到给定字符列表的所有排列,在本例中为“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/