![]() |
|
Модераторы: volvo877, Snowy, MetalFan |
![]()
|
|
| bullvinkle |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 18.3.2008 Репутация: нет Всего: нет |
Всемиизвестную задачу о Ханойских башнях нам предлагают решить рекурсивно при помощи стеков.
Я написал процедуру перемещения колец (MOV в программе) , и как по мне, так она обязана работать идеально, но если кольцо всего одно, процедура работает (слава Богу, что хоть где то правильно), а когда делаю отладку при двух кольцах, то на строчке №28 происходит то, чего я не прошу - диск с третьей башни переходит на вторую. Может я чего то не понимаю, объясните пожалуйсто. На всякий случай дам алгоритм рекурсивного решения задачи о Ханойских башнях: Если 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 г.).
Буду очень благодарен за помощь, так как преподаватель считает неправильным мне помогать. |
|||
|
||||
| megabist |
|
|||
![]() Mart Slaaf ![]() ![]() Профиль Группа: Участник Сообщений: 455 Регистрация: 3.4.2006 Где: Мск Репутация: нет Всего: 31 |
разрешите в ответ просто предложить вам свой вариант решения.
надеюсь это вам поможет в чём-то. сейчас не смогу посмотреть ваш код, устал. завтра постараюсь. Добавлено через 13 минут и 37 секунд я посмотрел, вы так сами сделали, вы туда передаёте s3 а принимаете его в процедуре, как s2. поэтому с вашим диском всё в порядке. -------------------- Don't panic! Жди, и Фатум тебя приведёт... |
|||
|
||||
| bullvinkle |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 18.3.2008 Репутация: нет Всего: нет |
Спасибо вам за готовую работу, сегодня вечером буду ее разбирать,но все же хотелось бы сделать из своей процедуры что то толковое.
"я посмотрел, вы так сами сделали, вы туда передаёте s3 а принимаете его в процедуре, как s2. поэтому с вашим диском всё в порядке." Подскажите, что нужно поменять - у меня ступор уже 4 дня )). Я действительно считаю, что процедура должна работать правильно и в упор не вижу ошибки, т.к. разрабатывая ее, опирался на вот этот алгоритм
|
|||
|
||||
| Dobermann |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 992 Регистрация: 7.1.2008 Репутация: нет Всего: 0 |
Наверное проще некуда..... |
|||
|
||||
![]()
|
| Правила форума "Delphi" | |
|
|
Запрещается! 1. Обсуждать и делится взломанными компонентами или программным обеспечением 2. Публиковать ссылки на варез 3. Оффтопить
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |