Изменения

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

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

61 байт добавлено, 01:49, 5 января 2014
Специализация алгоритма для генерации следующего разбиения на подмножества
fl = ''false''
'''for''' i = a.size '''downto''' 1
'''if''' (used.size <> 0) and (used[used.size] > a[i][a[i].size] ) '''then''' //если можем добавить в конец подмножества элемент из used
a[i].add(used[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''' //если можем заменить элемент, другим элементом из списка used
a[i][j] = used[used.size]; //заменяем
fl = ''true''
'''break'''
used.add(a[i][j]);
a[i].pop(j); // удаляем j элемент i -го подмножества и добавляем его в список
'''if''' (fl) '''break'''
// далее выведем все получившиеся подмножества
sort(used)
'''for''' i = 1 '''to''' used.size
a.add(list<int>(used[i])); // добавляем лексикографически минимальных хвост
return(a);
</code>
Анонимный участник

Навигация