Изменения

Перейти к: навигация, поиск
Нет описания правки
*genObj(K, p) {{---}} процедура генерирования
*'''int''' p {{---}} глубина рекурсии*'''list <A>''' K {{---}} текущий комбинаторный объект.*'''int''' len {{---}} требуемый размер объекта*'''list <A>''' alpha {{---}} все возможные элементы комбинаторного объекта, отсортированные в лексикографическом порядке*'''int''' n {{---}} размер alpha*''list <A>'' ans {{---}} список, содержащий все сгенерированные объекты в нужном порядке
'''list <A>''' genObj(K, p)
'''if''' p == len // если сформирован объект нужного размера, то возвращаем его
'''yield''' ans.push_back(K ); // возвращаем записываем объект K с сохранением состояния переборав ответ
'''else'''
'''for''' i = 1 .. n
'''if''' к объекту К можно добавить элемент aalpha[i] в конец K.push_back(aalpha[i]) genObj(K, p + 1) // добавляем aalpha[i] в конец и вызываем функцию genObj от нового полученного префикса
К.pop_back()
*genChooses(k, l) {{---}} процедура генерирования
*'''list <int>''' a {{---}} текущее сочетание*'''int''' k {{---}} следующий элемент в сочетании*'''int''' l {{---}} глубина рекурсии*''list <list <int> > ans'' {{---}} все сгенерированные сочетания в нужном порядке
'''list <int>''' genChooses(k, l)
a[l] = k;
'''if''' l == m
'''return''' ans.push_back(a)
'''for''' i = k + 1 to n
genChooses(i, l + 1);
48
правок

Навигация