С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/35: Рейтинг темы: голосов - 35, средняя оценка - 4.86
-3 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 33

Ханойские башни

11.03.2011, 15:32. Показов 6950. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Легенда гласит,что где-то в Ханое находится храм,в котором размещеа следущая конструкция:на основании укреплены 3 алмазных
стержня,на один из которых при сотворении мира Брахиа нанизал 64 золотых диска с отверстием посередине,причем оказался самый
большой диск,на нем-чут меньший и так далее,пока на верхушке пирамиды не оказался самый маленький диск.Жреца храма обязаны
перекладывать диски по следующим правилам:
1)За один ход можно перенести только один диск.
2)Нельзя класть больший диск на меньший.
Руководствуясь этими нехитрыми правилами,жрецы должны перенести и сходную пирамиду с 1-го стержня на 3-й.Как только они справятся с
этим заданием,наступит конец света.
Мы предлагаем Вам решить данную задачу с помощью рекурсии.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.03.2011, 15:32
Ответы с готовыми решениями:

Ханойские башни
Головоломка “Ханойские башни” состоит из трех стержней, пронумерованных числами 1, 2, 3. На стержень 1 надета пирамидка из n дисков ...

Ханойские башни
Ханойские башни. Алгоритм я приблизительно понимаю, но программу написать не могу... Мне не нужно решение, просто скажите, может лучше...

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

17
216 / 216 / 33
Регистрация: 26.12.2010
Сообщений: 691
11.03.2011, 15:58
тут была похожая задача. потратьте немного своего времени на поиск
https://www.cyberforum.ru/cpp-... 53746.html
0
-3 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 33
11.03.2011, 16:35  [ТС]
Ну решите пожалуйста!!Или не можите?
0
216 / 216 / 33
Регистрация: 26.12.2010
Сообщений: 691
11.03.2011, 16:41

Не по теме:

ваш пост похож на: "а прыгни в колодец, или слабо?"


задача была решена, причем решение подробно разбиралось.
0
-3 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 33
11.03.2011, 16:43  [ТС]
Я чот решения не вижу!!Решите мне плиз!!
0
-2 / 0 / 0
Регистрация: 14.02.2011
Сообщений: 6
11.03.2011, 16:49
Сильно много требований... Тебе сказали, что решили её, потрудись поискать!
0
79 / 78 / 6
Регистрация: 04.11.2010
Сообщений: 249
11.03.2011, 16:50
троль =) косит под дурачка =)
0
101 / 101 / 27
Регистрация: 10.09.2010
Сообщений: 267
11.03.2011, 17:12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
using namespace std;
 
/*
    функция принимает три аргумента
    int in - от куда
    int to - куда
    int n - сколько
*/
void move_tower(int in,int to,int n)
{
    if(n==1)// Если 1 диск просто переместить
    {
        cout << in << " -> " << to << endl;
    }
    else //Если больше одного
    {
        int free = 6-(in+to);//Ишем свободное место
        move_tower(in,free,n-1); // Перемешаем все диски кроме одного на свободное место
        move_tower(in,to,1);//Перемешаем нижний диск на нужное место
        move_tower(free,to,n-1);//Перемешаем те диски на нижний
    }
}
 
int main()
{
    int n;
    cout << "n = ";cin >> n;
    move_tower(1,3,n);
    cin.get();
    cin.get();
}
0
-3 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 33
11.03.2011, 17:41  [ТС]
Надо решить через рекурсию!!!!!!!
0
 Аватар для MILAN
899 / 793 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
11.03.2011, 17:43
lleonov, вам и решили через рекурсию.
0
-2 / 0 / 0
Регистрация: 14.02.2011
Сообщений: 6
11.03.2011, 18:13
lleonov, прочитай в учебнике, что такое рекурсия, а потом по кнопкам бей...
0
-3 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 33
11.03.2011, 18:27  [ТС]
а можете обьяснить а то вводиш цыфру а оно ещё какийта цыфры!!плиз!!
0
101 / 101 / 27
Регистрация: 10.09.2010
Сообщений: 267
11.03.2011, 23:59
Мне конечно не лень но на твоем месте я бы вбил в гугл(или яндекс, как хочешь) "Ханойская башня".
В общем мы просим ввести число(количество дисков которые надо переставить). Стережешь на котором в начале расположены диски обозначим - 1, пустой - 2, куда переставить - 3. Ну а
ещё какийта цыфры
это наши перестановки. Надеюсь так понятно.
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
12.03.2011, 05:04
Вот, вся тема - разжовывание рекурсии на примере ханойской башни. Должно помочь)
0
0 / 0 / 0
Регистрация: 13.03.2011
Сообщений: 29
28.03.2011, 13:45
При запуске программы на Borland C++ for Dos выдает ошибку unable to open include file "iostream"
когда пишу так #include <iostream.h> тогда выдает ошибку такую Deslaration syntax error для второй строки. что делать?????? помогите очень нужна эта задача.
0
0 / 0 / 0
Регистрация: 04.08.2012
Сообщений: 16
30.08.2012, 14:59
Доброго времени суток, у меня та же задача, через рекурсию...И даже готовый код я не понял, ибо не проходили функцию cin.get(), которая вставлена в тело маин...

А вообще у меня возникла идея создать в теле маин 3 массива, где допустим ar1[63]={64...1},ar2[63]={0...0},ar3[63]={0...0}, где первый числовая последовательность от 1 до 64, а вторые забиты нулями. А в функции допустим назовем ее int sorting(); написать arrey[i]=arrey[i-1]. Ну и еще в маин уже числа преобразовать в отображаемые символы, допустим квадратики...

Теперь никак не могу сложить воедино всю эту абракадабру
0
Twilight Parasite
 Аватар для Invader_Zim
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
30.08.2012, 17:22
Lerochka, # include <iostream>
и вообето надо свою тему создавать.
ovli, это будет не через рекурсию, а через циклы. и попробуй графику использовать, а то псевдографика это адЪ.
1
0 / 0 / 0
Регистрация: 04.08.2012
Сообщений: 16
30.08.2012, 19:26
Короче я долго думал и таки психанул и бездумно ее списал ЗДЕСЬ забыв о комбинаторике, что
количество перекладываний в зависимости от количества колец вычисляется по формуле 2^n-1, и при подстановке N_колец=64, очень долго ждал конца работы проги
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<iostream>
using namespace std;
void Towers (int number, int from, int to, int free)
{
  if (number>0)
  {
    Towers (number-1, from, free, to);
    cout << "--->" << number << "-disc "
         << from << "tower on " << to << "tower \n";
    Towers (number-1, free, to, from);
  }
}
void main()
{
    int N;
    cout<<"input number\n";
    cin>>N;
    Towers (N,1,3,2);
    cout<<endl;
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.08.2012, 19:26
Помогаю со студенческими работами здесь

Ханойские башни
Ребята, помогите разобраться с алгоритмом, то что сначала перемещаются n-1 дисков на вспомогательный стержень, затем n-ый нижний диск на...

Ханойские башни
Кто-то из вас может решить адачу о ханойских башнях на си++ рекурсивным способом, а тоя никак не могу догнат что в даное задаче является...

Ханойские башни
Уважаемые программисты. Срочно очень нужно рекурсивное решение задачи “Ханойские башни” на С# с графическим отображением. Может у...

Ханойские башни
У Дейтлов есть задача: Не могу до конца сформулировать алгоритм. Предположим, я беру 3 колышка и 4 диска int k1, k2, k3;...

Ханойские башни
Решил задачу о ханойских башнях рекурсивно: void HanBashR(int count, int start, int mid, int final){ if(count == 2){ cout...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru