Изменения
Нет описания правки
перейти к выбору следующего элемента
== Перестановки ==
<tex>P_{n} </tex> ''{{---}} количество перестановок размера n
permutation[n] ''{{---}} искомая перестановка''
was[n] ''{{- --}} использовали ли мы уже эту цифру в перестановке''
'''for''' i = 1 '''to''' n '''do''' ''//n - количество цифр в перестановке''
alreadyWas = (numOfPermutation-1) div <tex>P_{n-i} </tex> ''// сколько цифр уже полностью заняты перестановками с меньшим номером''
множества за <tex>O( log {n}) </tex>. Например декартово дерево по неявному ключу.
== Сочетания Размещения ==
Рассмотрим алгоритм получения i-го в лексикографическом порядке размещения <tex> A^k_n </tex>
<tex>A^{k}_{n} </tex> ''{{---}} количество размещений из n по k
Сложность алгоритма <tex>O(nk) </tex>.
== Размещения Сочетания ==Рассмотрим алгоритм получения i-го в лексикографическом порядке сочетания <tex> С^k_n </tex> <tex>С^{k}_{n} </tex> ''{{---}} количество сочетаний из n по k combination[n] ''{{---}} искомое сочетание'' was[n] ''{{---}} использовали ли мы уже эту цифру в сочетании'' '''for''' i = 1 '''to''' k '''do''' ''//k - количество цифр в сочетании'' ''// вычтем те "группы" где, i-цифра меньше искомой'' numOfCombination = ((numOfCombination-1) mod <tex> A^{k-i}_{n-i} </tex>) + 1 ''//сейчас мы должны поставить ту цифру, которая еще полностью не занята, т.е. alreadyWas+1, которая еще не занята'' '''for''' j = 1 '''to''' n '''do''' '''if''' was[j] = false '''then ''' cntFree++ '''if''' cntFree = alreadyWas+1 '''then ''' ans[i] = j was[j] = trueСложность алгоритма <tex>O(nk) </tex>.
== Битовые вектора ==
== Скобочные последовательности ==
== Разложение на слагаемые ==