Изменения

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

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

3462 байта добавлено, 02:11, 24 декабря 2016
Примеры
== Алгоритм ==
'''Нахождение номера по объекту:'''
<mathtex> n = \sum_{i=1}^l s_{a_i-1}</mathtex>, где <mathtex>s_ms_{a_i-1}</mathtex> это кол-во возможных объектов длины <mathtex>n-i+1</mathtex>, начинающихся на элемент <mathtex>m</mathtex>, <mathtex>l</mathtex> - длина данного объекта.
Нахождение объекта по номеру:Возьмем к примеру нахождение номера перестановки. Нам задана произвольная перестановка из N чисел. Пусть x - ее первое число. Тогда все перестановки с первыми числами от 1 до x-1 находятся перед нашей. Их количество num равно (x-1)·(N-1)!. Осталось узнать номер перестановки из N-1 числа, получающейся из нашей выбрасыванием числа x, и прибавить этот номер к num
'''Нахождение объекта по номеру:''' Пусть <tex>l </tex> - длина объекта. Идем по порядку по всем элементам объекта (<tex>i </tex> - позиция элемента в объекте). Каждый элемент <tex>p </tex> будет являться максимально возможным. Для <tex>p </tex> кол-во возможных объектов <tex>s</tex>, начинающихся на элемент <tex>p </tex> и имеющих длину <tex>l-i+1</tex>, не превосходит <tex>n</tex>. С каждым шагом <tex>n </tex> уменьшается на <tex>s</tex>. Возьмем к примеру нахождение перестановки по номеру. Алгоритм получения перестановки по ее номеру реализуется аналогично: сначала определяем первую цифру перестановки, деля номер на (N-1)! и прибавляя 1, затем вторую, деля остаток от предыдущего деления на (N-2)!, и т.д. == Примеры == '''Вычислим по перестановке ее номер.''' Возьмем перестановку из 4 чисел: 3124. Перестановки, начинающиеся на числа 1, 2 находятся перед нашей. Их количество: 2*(4-1)!=12. Следовательно минимально возможный номер нашей перестановки: 12+1=13. Следующий элемент перестановки - 1, минимально возможный, следовательно номер перестановки не поменялся. 3-ий элемент перестановки - 2, т.к. число 1 уже использовалось ранее в перестановке, то число 2 - минимально возможный элемент, и он также не меняет номер перестановки. Последний элемент не играет роли.Следовательно номер нашей перестановки 13.  '''Аналогично по номеру получим перестановку.''' Возьмем номер перестановки из 4 элементов: 13. Определим первую цифру перестановки, разделим нацело номер на (4-1)! и прибавим 1: <tex>x_1</tex> = 13 div (3!) + 1 = 3. Остаток от деления: 1. Аналогично найдем 2-й элемент: <tex>x_2</tex> = 1 div (2!) + 1 = 1. Остаток от деления: 1. 3-й элемент: <tex>x_3</tex> = 1 div (1!)+1 = 1. Но т.к. число 1 уже использовалось в перестановке, возьмем следующий в лексикографическом порядке элемент, не используемый ранее, 2, следовательно <tex>x_3</tex> = 2. 4-ый элемент получается исключением <tex>x_4</tex> = 4. Получаем перестановку: 3124. == Ссылки == [http://www.chasolimp.de/practic_info63.htm Получение объекта по номеру и номера по объекту]
62
правки

Навигация