Изменения

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

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

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

Навигация