std::next_permutation
returns the next permutation in lexicographic order, and returns false
if the first permutation (in that order) is generated.
Since the string you start with ("xxxxxoooo"
) is actually the last permutation of that string's characters in lexicographic order, your loop stops immediately.
Therefore, you may try sorting moves
before starting to call next_permutation()
in a loop:
std::string moves = "xxxxxoooo";
sort(begin(moves), end(moves));
while (std::next_permutation(begin(moves), end(moves)))
{
std::cout << moves << std::endl;
}
Here is a live example.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…