Изменения

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

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

14 байт добавлено, 02:45, 29 октября 2011
Нет описания правки
== Общий алгоритм получения комбинаторного объекта по номеру в лексикографическом порядке ==
В начале каждого шага numOfObject - номер комбинаторного объекта среди объектов с заданным префиксом.
'''for''' i = 1 '''to''' n '''do''' ''//n - количество элементов в комбинаторном объекте''
'''for''' j = 1 '''to''' n '''do''' ''//перебираем елементы в лексикографическом порядке''
Условимся, что нумерация обектов начинается с 1.
: База: i=0 - очевидно
: Докажем, что если первые i-элементов выбраны верно, то i+1 мы также выберем верно (на каждом шаге, numOfObject - номер комбинаторного объекта среди объектов с заданным префиксом).
: Переход: На i+1-ом шаге мы найдем, какой элемент должен быть i+1-ым для объекта с номером numOfOject, среди всех комбинаторных обектов, которые имеют префикс длины i - как у нас. <br> Рассмотрим искомый объект. Очевидно, что все объекты, у которых символ на
i+1 месте меньше чем у нас в лексикографическом порядке, будут идти раньше нас (префикс совпадает, а i+1 символ меньше), т.е. наш номер, по крайней мере больше, количества таких объектов. А те у которых больше будут идти после нас, т.е. даже номер найменьшего из них будет больше нашего. Тогда <br>
Анонимный участник

Навигация