<style>
#outer { text-align: center; }
#inner { width:500px; text-align: left; margin: 0 auto; }
.t { float: left; width:240px; border: 1px solid black;}
#clearit { clear: both; }
</style>
В Википедии есть хорошая статья о генерации лексикографического порядка. В нем также описан алгоритм генерации следующей перестановки.
Цитата:
Следующий алгоритм генерирует следующую перестановку лексикографически после данной перестановки. Он изменяет данную перестановку на месте.
- Найдите наивысший индекс
i
, такой, чтоs [i]
. Если такого индекса не существует, перестановка является последней перестановкой.- Найдите наивысший индекс
j> i
такой, чтоs [j]> s [i]
. Такойj
должен существовать, посколькуi + 1
является таким индексом.- Поменять местами
s [i]
наs [j]
.- Измените порядок всех элементов после индекса
i
до последнего элемента.
Домашнее задание? В любом случае, можете посмотреть на функцию C ++ std :: next_permutation, или это:
http://blog.bjrn.se/2008/04/lexicographic-permutations-using.html