Получение объекта по номеру — различия между версиями
Анастасия (обсуждение | вклад) (Новая страница: «== Определение == '''Получение объекта по номеру n'''- это нахождение объекта, который стоит n-ы…») |
Анастасия (обсуждение | вклад) |
||
Строка 24: | Строка 24: | ||
Возьмем к примеру нахождение перестановки по номеру. Сначала определяем первую цифру перестановки, деля номер на (N-1)! и прибавляя 1, затем вторую, деля остаток от предыдущего деления на (N-2)!, и т.д. | Возьмем к примеру нахождение перестановки по номеру. Сначала определяем первую цифру перестановки, деля номер на (N-1)! и прибавляя 1, затем вторую, деля остаток от предыдущего деления на (N-2)!, и т.д. | ||
− | == Пример нахождения | + | == Пример нахождения перестановки по номеру== |
Возьмем номер перестановки из 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. | Возьмем номер перестановки из 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. |
Версия 00:05, 16 января 2011
Содержание
Определение
Получение объекта по номеру n- это нахождение объекта, который стоит n-ым в лексикографическом порядке.
Пример
Возьмем перестановки из 3-х элементов в лексикографическом порядке, найдем перестановку под номером 4:
123 132 213 231 312 321
Искомая перестановка: 231.
Алгоритм
Пусть
- длина объекта. Идем по порядку по всем элементам объекта ( - позиция элемента в объекте). Каждый элемент будет являться максимально возможным. Для кол-во возможных объектов , начинающихся на элемент и имеющих длину , не превосходит . С каждым шагом уменьшается на .Алгоритм нахождение перестановки по номеру
Возьмем к примеру нахождение перестановки по номеру. Сначала определяем первую цифру перестановки, деля номер на (N-1)! и прибавляя 1, затем вторую, деля остаток от предыдущего деления на (N-2)!, и т.д.
Пример нахождения перестановки по номеру
Возьмем номер перестановки из 4 элементов: 13. Определим первую цифру перестановки, разделим нацело номер на (4-1)! и прибавим 1:
= 13 div (3!) + 1 = 3. Остаток от деления: 1. Аналогично найдем 2-й элемент: = 1 div (2!) + 1 = 1. Остаток от деления: 1. 3-й элемент: = 1 div (1!)+1 = 1. Но т.к. число 1 уже использовалось в перестановке, возьмем следующий в лексикографическом порядке элемент, не используемый ранее, 2, следовательно = 2. 4-ый элемент получается исключением = 4. Получаем перстановку: 3124.