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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.83
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
02.09.2012, 00:20     Ханойские башни #1
Решил задачу о ханойских башнях рекурсивно:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void HanBashR(int count, int start, int mid, int final){
    if(count == 2){
        cout << start << " -> " << mid << endl;
        cout << start << " -> " << final << endl;
        cout << mid << " -> " << final << endl;
    }else if(count > 2){
        HanBashR(count - 1, start, final, mid);
        cout << start << " -> " << final << endl;
        HanBashR(count-1,mid,start,final);
    }else if(count == 1)
        cout << start << " -> " << final;
    else if(count == 0)
        cout << "Действий не требуется." << endl;
}
Вот думаю, как переписать без рекурсии. Может быть у кого-то есть идеи?

Добавлено через 18 минут
Неужели тут не пытливых умов?

Добавлено через 21 минуту
Данная функция должна делать следующее (при 1 вызове функции start = 1, mid = 2, final = 3):
Функция должна выдавать последовательность того, как переложить n дисков с 1 колышка на 3 колышек, причём все n дисков первоначально расположены на 1 колышке , и все диски разных размеров. Диски на 1 колышке лежат от большего к меньшему (начиная снизу и двигаясь вверх).
При перекладывании нельзя класть больший диск на меньший диск.

Добавлено через 1 минуту
Для n дисков потребуется при оптимальном варианте: 2^n - 1 перекладываний.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.09.2012, 00:20     Ханойские башни
Посмотрите здесь:

C++ Ханойские башни, вывод решения по шагам
C++ Ханойские башни
Ханойские башни C++
C++ Ханойские башни
C++ Ханойские башни
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
02.09.2012, 00:22     Ханойские башни #2
описание задачи приведи. лень гуглить. а ум пытливится и пытливится... а гуглить ленится
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
02.09.2012, 00:33  [ТС]     Ханойские башни #3
Вот, хочу решить без рекурсии.
Миниатюры
Ханойские башни   Ханойские башни  
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
02.09.2012, 00:34  [ТС]     Ханойские башни #4
Рисунки надо смотреть сначала 2, а потом 1.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
02.09.2012, 00:55     Ханойские башни #5
Афаик, алгоритм их решения рекурсивен, так что если идти на принцип, то можно написать и без рекурсии, но со стеком, что в принципе одно и то же.
Yandex
Объявления
02.09.2012, 00:55     Ханойские башни
Ответ Создать тему
Опции темы

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