Изменения

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

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

4 байта добавлено, 03:26, 1 ноября 2011
Нет описания правки
== Описание алгоритма ==
Получим элементы объекта по порядку: сначала определим какой элемент будет стоять на 1-м месте, 2-м и т.д. Пусть мы нашли первые i элементов нашего объекта. Для всех вариантов элемента, который может стоять на (i+1)-ой позиции, посчитаем диапазон номеров, который будет соответствовать объектам с данным префиксом. Если искомый номер входит в один из диапазонов, то, очевидно, мы нашли элемент, который должени стоять на (i+1)-ом месте. (Диапазоны номеров не пересекаются, значит, на это место больше нельзя поставить никакой другой элемент, соответственно, это единственный элемент, который может стоять на этой позиции).
 
''В начале каждого шага numOfObject {{---}} номер комбинаторного объекта среди объектов с заданным префиксом. ''
 
''n {{---}} количество элементов в комбинаторном объекте (например, битовый вектор длины n)''
 
''k {{---}} количество различных элементов, которые могут находиться в данном комбинаторном объекте (элемент лексикографически меньше другого, если номер элемента меньше номера другого)''
 
'''for''' i = 1 '''to''' n '''do'''
'''for''' j = 1 '''to''' k '''do'''
88
правок

Навигация