Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 16.04.2010
Сообщений: 14
1

Ханойская башня

02.07.2012, 23:14. Показов 3977. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравтвуйте! Нужно решить задачу где на вход дано Н стержней и К дисков и еще известны начальная и конечная конфигурации(где какие диски лежат). У кого-нибудь есть идеи насчет алгоритма? Для 3-4 стержней я знаю как делать а вот для Н.
http://tristan-interview.blogs... em-of.html (нашел что-то об этом, но мне не совсем понятно что тут написано)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.07.2012, 23:14
Ответы с готовыми решениями:

Ханойская башня
Ханойская башня является одной из популярных головоломок XIX века. Даны три стержня, на один из...

Ханойская башня
Здравствуйте! Скажите пожалуйста как можно реализовать решение для ханойской башни, где я ввожу...

Ханойская башня
Добрый день! Помогите решить задачку про ханойскую башню. Надо написать приложение на с++, чтобы...

Ханойская башня
23. Написать программу, которая печатает последовательность действий (в виде «перенести диск с q на...

12
68 / 68 / 18
Регистрация: 03.06.2012
Сообщений: 176
02.07.2012, 23:22 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void t(int r, int b, int e) // количество дисков, начальный диск, конечный диск
{
    int c;      // среднее кольцо
 
    if ( ((b==1) && (e==2)) || ((b==2) && (e==1)) )
        c = 3;
    else
        if ( ((b==1) && (e==3)) || ((b==3) && (e==1)) )
            c = 2;
        else
            if ( ((b==2) && (e==3)) || ((b==3) && (e==2)) )
                c = 1;
 
    if (r>1)
    {
        t(r-1, b, c);
        cout << b << " -> " << e << endl;
        t(r-1, c, e);
    }
    else
        cout << b << " -> " << e << endl;
}
0
0 / 0 / 0
Регистрация: 16.04.2010
Сообщений: 14
02.07.2012, 23:27  [ТС] 3
вы прочитали мое сообщение? или просто по заголовку закопипастили код?)
0
68 / 68 / 18
Регистрация: 03.06.2012
Сообщений: 176
02.07.2012, 23:32 4
Извиняюсь, немного напутал
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
02.07.2012, 23:38 5
а в гугле искать не пробовали? что-то выдает, например это
http://alglib.sources.ru/articles/hanoy.php
http://algolist.manual.ru/maths/combinat/hanoi.php
в деталях не разбирался.
0
0 / 0 / 0
Регистрация: 16.04.2010
Сообщений: 14
02.07.2012, 23:41  [ТС] 6
Можно, пожалуйста, без тупых подколок по поводу "гугл знает", "ищи в гугле". Искал я часа 3 уже)
ЧИТАЙТЕ ПЛЗ ПЕРВОЕ СООБЩЕНИЕ. Н стержней! К дисков! не 3!!!!
0
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
03.07.2012, 05:33 7
lolers, на той странице что вы дали предлагают использовать поиск в глубину. Однако при больших числах это не прокатит. У вас есть ограничение по времени, а также на K и H?
0
0 / 0 / 0
Регистрация: 16.04.2010
Сообщений: 14
03.07.2012, 13:51  [ТС] 8
По времени ограничегий нет. Есть ограничение по н и к. К от 3 до 5 включительно. Н от 1 до восьми включительно
0
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
03.07.2012, 13:53 9
lolers, тогда делайте поиск в глубину и даже не парьтесь.
0
0 / 0 / 0
Регистрация: 16.04.2010
Сообщений: 14
03.07.2012, 14:19  [ТС] 10
Вы могли бы написать алгоритм, а то мне несовсем понятно то, что написано на том сайте.
0
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
03.07.2012, 17:27 11
Цитата Сообщение от lolers Посмотреть сообщение
Вы могли бы написать алгоритм
Мог бы.
Цитата Сообщение от lolers Посмотреть сообщение
а то мне несовсем понятно то, что написано на том сайте.
http://translate.google.com
0
68 / 68 / 18
Регистрация: 03.06.2012
Сообщений: 176
03.07.2012, 18:13 12
Допустим у нас 10 стержней. В начале все диски находятся на первом стержне и нужно перенести на 10. Бери любое число от 2 до 9 для временного хранения дисков. И все
0
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
03.07.2012, 18:47 13
g-h, там любое расположение дисков. Это значит, что они могут быть не на одном стержне.
0
03.07.2012, 18:47
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.07.2012, 18:47
Помогаю со студенческими работами здесь

Ханойская башня
Все вы видели башню Ханоя(если нет, то есть в гугл :D ) . У вас есть 3 столпа «а», «б» и «с», и вам...

Ханойская башня
Легенда гласит, что, в Великом храме города Бенарас, под собором, отмечающим середину мира,...

Ханойская башня. Рекурсия
Здравствуйте. Это одно из решений о ханойской башне. Я не могу понять область действия переменных в...

Ханойская башня- тесты
Переместить m дисков с одного из трех стержней на другой, соблюдая: 1) диски можно перемещать с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Из чего и как собрать свой домашний кинотеатр
bt_guru 21.01.2025
Создание домашнего кинотеатра: от идеи до реализации В современном мире домашний кинотеатр стал неотъемлемой частью комфортного жилого пространства, предоставляя возможность наслаждаться. . .
Ошибки стиральных машин
bt_guru 21.01.2025
Современные стиральные машины представляют собой сложные электронные устройства, оснащенные множеством датчиков и систем контроля. Они способны самостоятельно определять вес загруженного белья,. . .
Копирование (маппинг) объектов в JavaScript
bytestream 21.01.2025
В современной разработке программного обеспечения копирование объектов представляет собой фундаментальную операцию, которая требует особого внимания и понимания. Маппинг объектов в JavaScript – это. . .
Как работать с Apache Kafka в C# .NET
bytestream 21.01.2025
Apache Kafka представляет собой распределенную платформу потоковой передачи данных, которая произвела революцию в области обработки больших объемов информации в реальном времени. Эта система,. . .
Как использовать RabbitMQ в C# .NET
bytestream 21.01.2025
RabbitMQ представляет собой мощный брокер сообщений, который эффективно решает эту задачу, обеспечивая надежную передачу данных между множеством приложений. Этот инструмент реализует протокол AMQP. . .
Как объединить последние коммиты в Git
bytestream 21.01.2025
В мире разработки программного обеспечения система контроля версий Git стала незаменимым инструментом для управления исходным кодом. Одной из наиболее полезных, но порой сложных для освоения функций. . .
Как запушить новую локальную ветку (branch) в удалённый репозиторий Git и отслеживать её
bytestream 21.01.2025
В современной разработке программного обеспечения система контроля версий Git стала неотъемлемым инструментом для эффективного управления кодом и организации командной работы. Одной из ключевых. . .
Как создать директорию и все родительские директории, указанные в пути, с помощью Python
bytestream 21.01.2025
Python предоставляет мощные инструменты для работы с файловой системой через встроенные модули os и pathlib, которые значительно упрощают процесс манипуляции директориями. Эти модули содержат. . .
Как работать с массивами в JavaScript
bytestream 21.01.2025
Массивы в JavaScript представляют собой один из фундаментальных типов данных, который позволяет хранить упорядоченные коллекции различных элементов в одной переменной. Эта структура данных является. . .
Какая максимальная длина адреса (URL) в различных браузерах и стандартах
bytestream 21.01.2025
В современном мире интернет-технологий URL-адреса (Uniform Resource Locator) играют фундаментальную роль в функционировании веб-пространства. Эти уникальные идентификаторы ресурсов стали неотъемлемой. . .
Как сбросить локальный репозиторий до состояния удалённого репозитория Git
bytestream 21.01.2025
При разработке программного обеспечения с использованием системы контроля версий Git разработчики часто сталкиваются с необходимостью синхронизации локального и удаленного репозиториев. Данная задача. . .
Как запретить подсветку выделенного текста с помощью CSS
bytestream 20.01.2025
Подсветка текста при выделении является стандартным поведением браузера, которое не всегда соответствует дизайнерским решениям или функциональным требованиям веб-приложения. Выделение текста может. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru