Изменения

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

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

10 байт убрано, 12:24, 23 ноября 2014
Специализация алгоритма для генерации следующего разбиения на подмножества
<font color=green>// <tex>a</tex> {{---}} список, содержащий подмножества</font>
<font color=green>// <tex>used</tex> {{---}} список, в котором мы храним удаленные элементы</font>
used = list<int>();
fl = ''false''
'''for''' i = a.size '''downto''' 1
'''if''' (used.size <> != 0) and (used[used.size] > a[i][a[i].size]) '''then''' <font color=green>// если можем добавить в конец подмножества элемент из <tex>used</tex></font> a[i].add(used[used.size]); <font color=green>//добавляем</font> used.remove(used.size);
'''break'''
'''for''' j = a[i].size '''downto''' 1
'''if''' (used.size <> != 0) and (j <> != 1) and (used[used.size] > a[i][j]) '''then''' <font color=green>//если можем заменить элемент, другим элементом из списка <tex>used</tex> </font> a[i][j] = used[used.size]; <font color=green>//заменяем</font>
fl = ''true''
'''break'''
'''if''' (fl) '''break''' used.add(a[i][j]); <font color=green>//добавляем в used j элемент i-го подмножества</font> a[i].remove(j); <font color=green>//удаляем j элемент i-го подмножества</font>
<font color=green>//далее выведем все получившиеся подмножества</font>
sort(used)
'''for''' i = 1 '''to''' used.size
a.add(list<int>(used[i])); <font color=green>//добавляем лексикографически минимальных хвост</font> return(a);
</code>
Анонимный участник

Навигация