Изменения
→Специализация алгоритма для генерации следующего разбиения на подмножества
<code>
'''function''' nextSets(a:list<list<int>>):list<list<int>>; // a - список, содержащий подмножества // used - список, в котором мы храним удаленные элементы fl = ''false'' '''for''' i = n a.size - 1 '''downto''' 0 '''if''' можем добавить в конец подмножества элемент из used добавляем '''break''' '''for''' j = a[i].size - 1 '''downto''' 0 '''if''' можем заменить элемент, другим элементом из списка used заменяем fl = ''true'' '''break''' used.add(a[i][j]) // удаляем j элемент i подмножества и добавляем его в список '''if''' (fl) '''break''' // далее выведем все получившиеся подмножества sort(used) '''for''' i = 0 '''to''' used.size - 1 println(used[i]) // выводим лексикографически минимальных хвост return(a);
</code>