![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Временно — юрист.
Форумчанин
Регистрация: 31.03.2008
Сообщений: 204
|
![]()
Всемиизвестную задачу о Ханойских башнях нам предлагают решить рекурсивно при помощи стеков.
Я написал процедуру перемещения колец, и как по мне, так она обязана работать идеально, но если кольцо всего одно, процедура работает (слава Богу, что хоть где то правильно), а когда делаю отладку при двух кольцах, то на строчке №29 происходит то, чего я не прошу - диск с третьей башни переходит на вторую. Может я чего то не понимаю, объясните пожалуйсто. На всякий случай дам алгоритм рекурсивного решения задачи о Ханойских башнях: Если m=1, то перенеси один диск с s1 на s2. Если же m> 1, то перенеси временно m - 1 верхних дисков с s1 на s3. Потом перенеси один оставшийся диск с s1 на s2 и, наконец, перенеси m - 1 дисков, хранящихся на s3, на шпиль s2. Что касается перенесения m-1 дисков, то для этого подойдет тот же алгоритм, но с уменьшенным (от m до m-1) числом переносимых дисков. Таким образом, мы перейдем от m к m-1, oт m-1 к m-2, m-3,... и дойдем до единицы А так же саму задачу В центре мира в вершинах равностороннего треугольника в землю вбиты три алмазных шпиля. На одном из них надето 64 золотых диска убывающих радиусов (самый большой – нижний). Трудолюбивые буддийские монахи день и ночь переносят диски с одного шпиля на другой. При этом, диски следует переносить по одному и нельзя класть больший диск на меньший . Когда все диски перенесут на другой шпиль, наступит конец света (задачу и рассказ придумал математик Эдуар Люка в 1883 г.). Код:
|
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 02.09.2007
Сообщений: 1,193
|
![]() |
![]() |
![]() |
![]() |
#3 |
Временно — юрист.
Форумчанин
Регистрация: 31.03.2008
Сообщений: 204
|
![]()
Спасибо, но мне бы хотелось разобраться со своей процедурой.
При ее написании придерживался именно того алгоритма, что ты мне дал. И я до сих пор не понимаю проблемы. Мне подсказали, что процедуру MOV следовало бы переименовать - теперь она зовется Cange , но мне от этого не легче ![]() |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Задачи на решение Pascal abc | Tecka | Фриланс | 9 | 18.12.2012 22:20 |
Решение задачи на c++ | JOFRIF | Помощь студентам | 2 | 21.04.2008 00:35 |
Решение задачи на Си | kisha | Общие вопросы C/C++ | 9 | 19.11.2007 23:31 |
решение задачи | TuNeR | Microsoft Office Excel | 2 | 15.10.2007 09:31 |