Изменения

Перейти к: навигация, поиск

Получение следующего объекта

353 байта добавлено, 09:25, 29 октября 2011
Нет описания правки
</code>
=== Пример работы ===
{| border="1"|0||1||0||1||1||исходный битовый вектор|-| || ||^|| || ||находим элемент 0 (самый правый)|-| || ||1||1||1||меняем его на 1|-| || ||1||0||0||меняем элементы правее на нули|-|0||1||1||0||0||следующий битовый вектор|}
== Специализация алгоритма для генерации следующей перестановки ==
Двигаемся справа налево по элементам объекта, пока не найдем элемент, нарушающий убывающую последовательность. Обменяем его с минимальным элементом, большим нашего, стоящим правее. Далее перевернем правую часть.
<code>
bool Nextnext_permutation(vector<int> &a) {
int n = a.size();
int pos = n - 2;
</code>
=== Пример работы ===
 
{| border="1"
|1||3||2||5||4||исходная перестановка
| || || || ||^||минимальный элемент больше нашего
|-
|1||3||4||5||2||меняем их местами
|-
| || || ||2||5||разворачивам правую часть
117
правок

Навигация