Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Boris Sivko                          2:452/26.14    02 Feb 2003  23:29:08
 To : Ivan Merzlyakov
 Subject : Все варианты числовой последовательности
 -------------------------------------------------------------------------------- 
 
 
     Отвечать на письмо на тему "Все варианты числовой последовательности" очень 
 просто. Это уже сделал Ivan Merzlyakov. о вот когда часы пробили ровно 12:16, а 
 календарь показывал Воскресенье Февраль 02 2003, настала моя очередь:
 
  IM> Имеем число. Максимальное количество цифр в числе 10. Цифры в числе не
  IM> повторяются. Как получить все варианты перестанвок цифр в
  IM> числе?
 
 ДДД Цитирую ДДД
 Опишем его (при N=5), от чего рассуждения не утратят общности.
 Алгоритм составлен так, что в процессе его исполнения перестановки
 N чисел располагаются лексикографически (в словарном порядке). Это
 значит,  что  перестановки сравниваются слева направо поэлементно.
 Больше та,  у которой  раньше  встретился  элемент,  больше  соот-
 ветствующего  ему элемента во второй перестановке.(апример,  если
 S=(3,5,4,6,7),а L=(3,5,6,4,7), то S<L).
      Принцип работы алгоритма разъясним на примере.  Допустим, не-
 обходимо воспpоизвести все перестановки цифр 3,4,5,6,7. Первой пе-
 рестановкой считаем перестановку (3,4,5,6,7).  Последней воспроиз-
 водимой перестановкой будет (7,6,5,4,3).
    Предположим, что на некотором шаге  работы  алгоритма  получена
 перестановка
 
                           P=(5,6,7,4,3).
 
    Для того  чтобы определить непосредственно следующую за ней пе-
 рестановку,  необходимо,  пересматривая данную перестановку справа
 налево,  следить за тем,  чтобы каждое следующее число было больше
 предыдущего, и остановиться сразу же, как только это правило нару-
 шится. Место останова указано стрелкой:
 
                               (5,6,7,4,3).
                                  ^
                                  і
 
    Затем вновь  просматриваем  пройденный путь ( справа налево ) до
 тех пор, пока не дойдем до первого числа, которое уже больше отме-
 ченного. иже место второго останова отмечено двойной стрелкой.
 
                                (5,6,7,4,3).
                                   ^ ^
                                   і є
 
    Поменяем местами отмеченные числа:
 
                                (5,7,6,4,3).
                                   ^ ^
                                   є і
    Теперь в зоне, расположенной справа от двойной стрелки, упорядо-
 чим  все числа в порядке возрастания.  Так как до сих пор они были
 упорядочены по убыванию , то это легко сделать, перевернув указан-
 ный отрезок. Получим:
 
                           Q=(5,7,3,4,6).
 
 Q и  есть  та  перестановка,  которая  должна воспроизводиться не-
 посредственно после P.
    Действительно, P<Q,  так  как,  пересматривая  эти перестановки
 слева направо, (P(2)=6,Q(2)=7). Пусть существует такая перестановка
 R,  что P<R<Q.  Тогда P(1)=R(1)=Q(1). По построению же Q(2) -- это
 наименьшее  во  множестве  Q\Q(1)={3,4,6,7}  число,   такое,   что
 
 Q(2)>P(2). Поэтому для R(2) верно одно из двух равенств: R(2)=Q(2)
 
 или R(2)=P(2).  о так как в P элементы,  начиная с P(3), убывают,
 то из P<R следует,  что если P(2)=R(2),  то и P=R. Аналогично, так
 как в Q элементы,  начиная с Q(3),  возрастают, то из R<Q следует,
 что если R(2)=Q(2), то и R=Q. ДДД Конец цитаты ДДД
 
      Счастливо, Ivan. Вспоминай обо мне...
 ... I'll be back...
  * Origin: ГОМЕЛЬ - самый ГОМЕЛЬ в мире! (2:452/26.14)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Все варианты числовой последовательности   Ivan Merzlyakov   02 Feb 2003 13:16:15 
 Все варианты числовой последовательности   Boris Sivko   02 Feb 2003 23:29:08 
 Все варианты числовой последовательности   Juriy Tikhomirov   03 Feb 2003 02:01:52 
 Все варианты числовой последовательности   Max Alekseyev   03 Feb 2003 19:40:48 
Архивное /ru.algorithms/207123e3d9bd3.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional