91
правка
Изменения
→Специализация алгоритма для генерации следующего разбиения на подмножества
* Двигаясь снизу вверх и справа налево, будем удалять элементы, записывая их в отдельный массив. Будем повторять эту операцию, пока не выполнится одно из условий ниже:
** Каждый раз, рассматривая новый Мы можем заменить рассматриваемый элемент, будем пытаться заменить его уже удаленным элементом из нашего массива, так, чтобы не нарушалась возрастающая последовательность элементов в этом подмножестве. Из всех подходящих элементов выбираем минимальный. '''Важное замечание''': мы не можем заменить 1ый элемент подмножества, мы можем только удалить его.** Каждый раз, переходя в новое Мы можем дополнить рассматриваемое подмножество, будем пытаться дополнить его уже удаленным элементом из уже удаленных, так, чтобы не нарушалась возрастающая последовательность элементов в этом подмножестве. Из всех подходящих элементов выбираем минимальный.
* Допишем лексикографически минимальный хвост подмножеств из оставшихся элементов.
<code>
// sets a - матрица содержащая подмножества
// used - массив в котором мы храним, удаленные элементы
'''for''' i = n '''downto''' 0