Изменения

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

Получение номера по объекту

15 байт добавлено, 19:08, 26 декабря 2017
Разбиение на слагаемые: косметические изменения
== Разбиение на слагаемые ==
Рассмотрим алгоритм получения номера , в лексикографическом порядке данного разбиения , по данному разбиению на слагаемые числа <tex>N</tex>. Нужно помнить о том, что разбиения, отличающиеся только порядком слагаемых, считаются одинаковыми. Из всех разбиений, получаемых перестановками слагаемых, выберем то, где слагаемые упорядочены лексикографически, и будем строить его.
*<tex>\mathtt{numOfPart}</tex> {{---}} искомый номер разбиения
'''int''' part2num(part: '''list<int>'''):
numOfPart = 0, last = 0, sum = 0
'''for''' i = 1 '''to''' part.size
'''for''' j = last '''to''' part[i] - 1 <font color=green>// перебираем все элементы, лексикографически меньшие нашеготекущего, но большие или равные не меньшие предыдущего</font>
numOfPart += d[N - sum - j][j] <font color=green>// прибавляем количество перестановок, которые могли начинаться с <tex>j</tex></font>
sum += part[i] <font color=green>// увеличиваем уже поставленную сумму</font>
Анонимный участник

Навигация