Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Башни ханоя - модифиц. версия, Помогите плиз с мод. версией! 
V
    Опции темы
nini
Дата 4.2.2007, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 4.2.2007

Репутация: нет
Всего: нет



Дана проблема "Башни ханоя" - 3 оси A,B и C; Самый малый, верхний диск обозн. как 1, самый нижний и самый большой - n. Диски должны быть перенесены с А на B.
Условие (и моя проблема) - диск не может быть перенесен непосредственно с А на B или наоборот.
--
Как подказка - должны использоваться 3 рекурсивных вызова.

Кто-нибудь может уже сталкивался с такой проблемой? Какие-нибудь идеи?
Буду очень, очень признателен за помощь!
PM MAIL   Вверх
Michael_Rybak
Дата 5.2.2007, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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: ()

Дальше понятно.
PM MAIL   Вверх
nini
Дата 6.2.2007, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 4.2.2007

Репутация: нет
Всего: нет



Спасибо,
Это, насколько я помню, матем.индукция?
Но, честно говоря, как это запрограммировать (т.е. алгоритм с в.н. ограничением), я так и понял; не смог, сколько ни пытался  smile  smile 
PM MAIL   Вверх
Michael_Rybak
Дата 6.2.2007, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 30.12.2006

Репутация: нет
Всего: 1



Что-то вроде этого:

Код

SolveABC(int N, char A, char B, char C)
  if N = 1
    print A "->" B
    print B "->" C
  else
    SolveABC(N - 1, A, B, C)
    print A "->" B
    SovleABC(N - 1, C, B, A)
    print B "->" C
    SolveABC(N - 1, A, B, C)
End

input x
SolveABC(x, 'A', 'B', 'C')

PM MAIL   Вверх
nini
Дата 6.2.2007, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 4.2.2007

Репутация: нет
Всего: нет



Спасибо большое!!!  smile 
Заработало!
А можно  smile немного больше объяснения к теоретической части?
PM MAIL   Вверх
Michael_Rybak
Дата 6.2.2007, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 30.12.2006

Репутация: нет
Всего: 1



А что тебе непонятно? Я даже не знаю, что именно тут подробнее описывать. Умея решать задачу для 5 дисков, мы это умение применяем, не обращая внимания на 6й диск. Потом его перекладываем. Потом опять применяем умение, только диски ставим в другую сторону (не с А на В а с В на А). Опять обращая внимания на 6й диск. Потому что 6й большой, ему видней. Ну и потом его переставляем на В, и опять таки применяем свое умение, и получаем +3 опыта и артефакт - башню В.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0766 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.