Изменения

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

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

42 байта добавлено, 03:55, 29 октября 2011
Нет описания правки
== Общий алгоритм получения комбинаторного объекта по номеру в лексикографическом порядке ==
:Получим элементы объекта по порядку, сначала определим какой элемент будет стоять на 1-м месте, 2-м и т.д.Пусть мы нашли первые i элементов нашего объекта. Для всех вариантов i+1 элемента посчитаем диапазон номеров объектов с данным префиксом. Если искомый номер входит в один из диапазонов, то очевидно мы нашли элемент, который должени стоять на (i+1)-ом месте. ''//В начале каждого шага numOfObject {{--- }} номер комбинаторного объекта среди объектов с заданным префиксом. '' '''for''' i = 1 '''to''' n '''do''' ''//n {{--- }} количество элементов в комбинаторном объекте''
'''for''' j = 1 '''to''' n '''do''' ''//перебираем елементы в лексикографическом порядке''
'''if''' можем поставить на i-e место
== Перестановки ==
Рассмотрим алгоритм получения i-ой в лексикографическом порядке перестановки размера n.
<tex>P_{n} </tex> ''{{- --}} количество перестановок размера n permutation[n] ''{{--- }} искомая перестановка''
was[n] ''- использовали ли мы уже эту цифру в перестановке''
'''for''' i = 1 '''to''' n '''do''' ''//n - количество цифр в перестановке''
== Сочетания ==
Рассмотрим алгоритм получения i-го в лексикографическом порядке размещения <tex> A^k_n </tex>
<tex>A^{k}_{n} </tex> ''{{- --}} количество размещений из n по k placement[n] ''{{--- }} искомое размещение'' was[n] ''{{--- }} использовали ли мы уже эту цифру в размещении''
'''for''' i = 1 '''to''' k '''do''' ''//k - количество цифр в размещении''
alreadyWas = (numOfPlacement-1) div <tex> A^{k-i}_{n-i} </tex> ''// сколько цифр уже полностью заняты размещениями с меньшим номером''
Анонимный участник

Навигация