48
правок
Изменения
Нет описания правки
*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 // если сформирован объект нужного размера, то возвращаем его
'''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
'''for''' i = k + 1 to n
genChooses(i, l + 1);