76
правок
Изменения
м
Добавлена статья про следующее сочетание
|-
|'''1'''||'''3'''||'''4'''||'''2'''||'''5'''||следующая перестановка
|}
== Специализация алгоритма для генерации следующего сочетания ==
* Добавим в конец массива с сочетанием N+1 – максимальный элемент.
* Пойдём справа налево. Будем искать номер элемента, который отличается от предыдущего на 2.
* Увеличим найденный элемент на 1, и допишем в конец минимально возможный хвост, если такого элемента нет – на вход было дано последнее сочетание.
a[k + 1] := n + 1;
i := n;
'''while''' (i > 0) '''and''' ((a[i + 1] - a[i]) < 2) '''do'''
i := i - 1;
'''if''' i > 0 '''then'''
'''begin'''
a[i] := a[i] + 1;
'''for''' j := i + 1 '''to''' k '''do'''
a[j] := a[j - 1] + 1;
'''Вывод массива a'''
'''end'''
'''else'''
'''Вывести “No answer”'''
=== Пример работы ===
{| class="wikitable" border = 1
|1||2||5||6||style="background:#FFCC00"|'''7'''||Дописываем 7 в конец сочетания.
|-
|1||style="background:#FFCC00"|2||5||6||'''7'''||
|-
| ||^|| || || ||Находим элемент i, a[i + 1] - a[ i ] >= 2
|-
|1||style="background:#FFCC00"|3||5||6||'''7'''||Увеличиваем его на 1.
|-
|1||3||style="background:#FFCC00"|4||style="background:#FFCC00"|5||style="background:#FFCC00"|'''6'''||Дописываем минимальный хвост.
|-
|'''1'''||'''3'''||'''4'''||'''5'''||''' '''||Следующее сочетание.
|}