Изменения

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

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

515 байт убрано, 06:17, 29 октября 2011
Нет описания правки
== Общий алгоритм получения номера в лексикографическом порядке по комбинаторному объекту ==
 Получим элементы Номер данного комбинаторного объекта по порядку: сначала определим какой элемент будет стоять на равен количеству меньших в лексикографическом порядке комбинаторных объектов плюс 1(нумерацию ведём с 1-м месте, 2-м и т.д). Пусть мы нашли первые Тогда количество меньших объектов можно представить как сумму количеств объектов у которых префикс длины i элементов нашего объекта. Для всех вариантов элементасовпадает , который может стоять на (а i+1)-ой позиции, посчитаем диапазон номеров, который будет сообветствовать объектам с данным префиксом. Если искомый номер входит в один из диапазонов, то, очевидно, мы нашли элемент, который должени стоять на (лексикографически меньше i+1)-ом местего в данном объекте(i=0.. (Диапазоны номеров не пересекаются, значит, на это место больше нельзя поставить никакой другой элемент, соответственно, это единственный элемент, который может стоять на этой позицииn-1).
numOfObject=1 ''// numOfObject {{---}} искомый номер комбинаторного объекта
'''for''' i = 1 '''to''' n '''do''' ''//перебираем элементы комбинаторного объекта''
Анонимный участник

Навигация