|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Valentin Davydov 2:5020/400 23 May 2002 20:59:56 To : Anton Antonenko Subject : Re: Ханойские башни. --------------------------------------------------------------------------------
> From: Anton Antonenko <Anton.Antonenko@p13.f110.n5022.z2.fidonet.org>
> Date: Tue, 21 May 2002 22:35:48 +0400
>
> Подкиньте, плиз, алгоpитм pешения сабжа. Можно в мыло. Если есть исходник на
>C, бyдy пpемного благодаpен.
Весьма прост рекурсивный алгоритм: один диск можно переставить прямо куда
надо, а чтобы переставить N дисков, надо сначала переставить верхние N-1
на свободный штырь, затем переставить нижний куда надо, а потом переставить
оставшиеся N-1 на него. Вот код на фортране:
SUBROUTINE переставить(N,FROM,TO,SPARE)
DIMENSION FROM(N), TO(N), SPARE(N)
IF(N) 1,3,2
1 PRINT *, 26HERROR: N CAN'T BE NEGATIVE
STOP
2 CALL переставить(N-1,FROM,SPARE,TO)
TO(N)=FROM(N)
FROM(N)=0
CALL переставить(N-1,SPARE,TO,FROM)
3 RETURN
END
Вал. Дав.
--- ifmail v.2.15dev5
* Origin: St. Petersburg State University (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/4417c51a8673.html, оценка из 5, голосов 10
|