std::next_permutation使えば一発だな。
>>796