|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Anton Maydell 2:5030/744.179 26 May 2003 22:45:05 To : Sergey Zorin Subject : Ханойская башня -------------------------------------------------------------------------------- 26 May 03 22:51, you wrote to me: SZ>>> Имеются три колышка А, В, С. Hа колышек А нанизано n дисков SZ>>> радиуса 1,2,...,n, таким образом, что диск радиуса i является SZ>>> i-м SZ>>> сверху. Задача состоит в том, чтобы переместить все диски на SZ>>> колышек С таким образом, чтобы диск радиуса i был опять i-м SZ>>> сверху. За один раз разрешается перемещать только один диск с SZ>>> любого колышка на любой другой. Должно выполняться условие, что SZ>>> на каждом колышке ни в какой момент никакой диск не может SZ>>> находиться выше диска с меньшим номером. SZ> А как насчет того, что можно перемещать только один диск за один раз? Всё ок. Чуть измененная программа после введения числа n, выводит последовательность из (2^n-1) перекладываний. Hапример для n = 3 вывод: A->C A->B C->B A->C B->A B->C A->C procedure Hanoi(N:integer; From, To_, Temp : char); Begin if N > 0 then begin Hanoi(N-1, From, Temp, To_); writeln (From,'->',To_); Hanoi(N-1, Temp, To_, From) end End; end; var n:integer; begin read(n); Hanoi(n,'A','C','B'); end. Anton --- GoldED/W32 3.0.1-asa8 * Origin: (2:5030/744.179) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/190533ed2990c.html, оценка из 5, голосов 10
|