Форум программистов, компьютерный форум CyberForum.ru

Ханойские башни - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.94
lleonov
-92 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 33
11.03.2011, 15:32     Ханойские башни #1
Легенда гласит,что где-то в Ханое находится храм,в котором размещеа следущая конструкция:на основании укреплены 3 алмазных
стержня,на один из которых при сотворении мира Брахиа нанизал 64 золотых диска с отверстием посередине,причем оказался самый
большой диск,на нем-чут меньший и так далее,пока на верхушке пирамиды не оказался самый маленький диск.Жреца храма обязаны
перекладывать диски по следующим правилам:
1)За один ход можно перенести только один диск.
2)Нельзя класть больший диск на меньший.
Руководствуясь этими нехитрыми правилами,жрецы должны перенести и сходную пирамиду с 1-го стержня на 3-й.Как только они справятся с
этим заданием,наступит конец света.
Мы предлагаем Вам решить данную задачу с помощью рекурсии.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2011, 15:32     Ханойские башни
Посмотрите здесь:

C++ ХАнойские башни
C++ Ханойские башни
Ханойские башни C++
C++ Ханойские башни
Ханойские башни C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NiRamz
209 / 209 / 16
Регистрация: 26.12.2010
Сообщений: 691
11.03.2011, 15:58     Ханойские башни #2
тут была похожая задача. потратьте немного своего времени на поиск
http://www.cyberforum.ru/cpp-beginne...ead153746.html
lleonov
-92 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 33
11.03.2011, 16:35  [ТС]     Ханойские башни #3
Ну решите пожалуйста!!Или не можите?
NiRamz
209 / 209 / 16
Регистрация: 26.12.2010
Сообщений: 691
11.03.2011, 16:41     Ханойские башни #4

Не по теме:

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


задача была решена, причем решение подробно разбиралось.
lleonov
-92 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 33
11.03.2011, 16:43  [ТС]     Ханойские башни #5
Я чот решения не вижу!!Решите мне плиз!!
electron4ik
-2 / 0 / 0
Регистрация: 14.02.2011
Сообщений: 6
11.03.2011, 16:49     Ханойские башни #6
Сильно много требований... Тебе сказали, что решили её, потрудись поискать!
slice
32 / 75 / 4
Регистрация: 04.11.2010
Сообщений: 249
11.03.2011, 16:50     Ханойские башни #7
троль =) косит под дурачка =)
Overmind024
99 / 99 / 6
Регистрация: 10.09.2010
Сообщений: 267
11.03.2011, 17:12     Ханойские башни #8
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();
}
lleonov
-92 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 33
11.03.2011, 17:41  [ТС]     Ханойские башни #9
Надо решить через рекурсию!!!!!!!
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
11.03.2011, 17:43     Ханойские башни #10
lleonov, вам и решили через рекурсию.
electron4ik
-2 / 0 / 0
Регистрация: 14.02.2011
Сообщений: 6
11.03.2011, 18:13     Ханойские башни #11
lleonov, прочитай в учебнике, что такое рекурсия, а потом по кнопкам бей...
lleonov
-92 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 33
11.03.2011, 18:27  [ТС]     Ханойские башни #12
а можете обьяснить а то вводиш цыфру а оно ещё какийта цыфры!!плиз!!
Overmind024
99 / 99 / 6
Регистрация: 10.09.2010
Сообщений: 267
11.03.2011, 23:59     Ханойские башни #13
Мне конечно не лень но на твоем месте я бы вбил в гугл(или яндекс, как хочешь) "Ханойская башня".
В общем мы просим ввести число(количество дисков которые надо переставить). Стережешь на котором в начале расположены диски обозначим - 1, пустой - 2, куда переставить - 3. Ну а
ещё какийта цыфры
это наши перестановки. Надеюсь так понятно.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
12.03.2011, 05:04     Ханойские башни #14
Вот, вся тема - разжовывание рекурсии на примере ханойской башни. Должно помочь)
Lerochka
0 / 0 / 0
Регистрация: 13.03.2011
Сообщений: 29
28.03.2011, 13:45     Ханойские башни #15
При запуске программы на Borland C++ for Dos выдает ошибку unable to open include file "iostream"
когда пишу так #include <iostream.h> тогда выдает ошибку такую Deslaration syntax error для второй строки. что делать?????? помогите очень нужна эта задача.
ovli
0 / 0 / 0
Регистрация: 04.08.2012
Сообщений: 16
30.08.2012, 14:59     Ханойские башни #16
Доброго времени суток, у меня та же задача, через рекурсию...И даже готовый код я не понял, ибо не проходили функцию cin.get(), которая вставлена в тело маин...

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

Теперь никак не могу сложить воедино всю эту абракадабру
Invader_Zim
Twilight Parasite
 Аватар для Invader_Zim
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
30.08.2012, 17:22     Ханойские башни #17
Lerochka, # include <iostream>
и вообето надо свою тему создавать.
ovli, это будет не через рекурсию, а через циклы. и попробуй графику использовать, а то псевдографика это адЪ.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.08.2012, 19:26     Ханойские башни
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
ovli
0 / 0 / 0
Регистрация: 04.08.2012
Сообщений: 16
30.08.2012, 19:26     Ханойские башни #18
Короче я долго думал и таки психанул и бездумно ее списал ЗДЕСЬ забыв о комбинаторике, что
количество перекладываний в зависимости от количества колец вычисляется по формуле 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;
 
}
Yandex
Объявления
30.08.2012, 19:26     Ханойские башни
Ответ Создать тему
Опции темы

Текущее время: 14:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru