![]() |
|
![]() ![]() ![]() |
|
nini |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 4.2.2007 Репутация: нет Всего: нет |
Дана проблема "Башни ханоя" - 3 оси A,B и C; Самый малый, верхний диск обозн. как 1, самый нижний и самый большой - n. Диски должны быть перенесены с А на B.
Условие (и моя проблема) - диск не может быть перенесен непосредственно с А на B или наоборот. -- Как подказка - должны использоваться 3 рекурсивных вызова. Кто-нибудь может уже сталкивался с такой проблемой? Какие-нибудь идеи? Буду очень, очень признателен за помощь! |
|||
|
||||
Michael_Rybak |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 30.12.2006 Репутация: нет Всего: 1 |
Зная, как решить задачу для некоторого N-1, получим решение для N. Сначала применим полностью решение для N-1. Получаем:
A: (N), C: (), B: (N-1, N-2, ..., 1) Теперь выполняем A->C: A: (), C: (N), B: (N-1, N-2, ..., 1) Теперь применяем опять решение для N-1, но мысленно поменяв между собой А и В. Получаем A: (N-1, N-2, ..., 1), C: (N), B: () Дальше понятно. |
|||
|
||||
nini |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 4.2.2007 Репутация: нет Всего: нет |
Спасибо,
Это, насколько я помню, матем.индукция? Но, честно говоря, как это запрограммировать (т.е. алгоритм с в.н. ограничением), я так и понял; не смог, сколько ни пытался ![]() ![]() |
|||
|
||||
Michael_Rybak |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 30.12.2006 Репутация: нет Всего: 1 |
Что-то вроде этого:
|
|||
|
||||
nini |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 4.2.2007 Репутация: нет Всего: нет |
Спасибо большое!!!
![]() Заработало! А можно ![]() |
|||
|
||||
Michael_Rybak |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 30.12.2006 Репутация: нет Всего: 1 |
А что тебе непонятно? Я даже не знаю, что именно тут подробнее описывать. Умея решать задачу для 5 дисков, мы это умение применяем, не обращая внимания на 6й диск. Потом его перекладываем. Потом опять применяем умение, только диски ставим в другую сторону (не с А на В а с В на А). Опять обращая внимания на 6й диск. Потому что 6й большой, ему видней. Ну и потом его переставляем на В, и опять таки применяем свое умение, и получаем +3 опыта и артефакт - башню В.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |