Изменения

Перейти к: навигация, поиск
Описание процедуры построения
Данный алгоритм генерирует все объекты заданного типа в лексикографическом порядке. На каждом шаге генерируется минимальный возможный префикс требуемого объекта.
*<tex>\mathtt{genObj(K, ␣␣p␣␣depth)}</tex> {{---}} процедура генерирования,*<tex>\mathtt{ pdepth}</tex> {{---}} глубина рекурсии,
*''<tex>\mathtt{list}</tex> <tex>\langle{A}\rangle </tex>'' <tex>\mathtt{K}</tex> {{---}} текущий комбинаторный объект,
* <tex>\mathtt{len}</tex> {{---}} требуемый размер объекта,
'''list<A>''' genObj('''int''' K, '''int''' pdepth): '''if''' p depth == len <font color=green> // если сформирован объект нужного размера, то возвращаем его </font>
ans.push_back(K) <font color=green>// записываем объект K в ответ </font>
'''else'''
'''if''' к объекту К можно добавить элемент alpha[i] в конец
K.push_back(alpha[i])
genObj(K, p depth + 1) <font color=green> // добавляем alpha[i] в конец и вызываем функцию genObj от нового полученного префикса </font>
К.pop_back()
Анонимный участник

Навигация