Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 09.02.2014
Сообщений: 31

Ремонт в Ханое

09.02.2014, 18:19. Показов 4602. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Помогите, пожалуйста, написать код для задачи:

Постановлением ЮНЕСКО оригинал Ханойской башни был подвергнут реставрации. В связи с этим во время пользования головоломкой нельзя было перекладывать кольца с первого стержня сразу на третий и наоборот. Напишите рекурсивную процедуру, которая выводит последовательность перекладываний с учетом таких ограничений.

Формат входного файла

Вводится одно натуральное число N – количество колец на первом стержне (1 ≤ N ≤ 7).


Формат выходного файла

Требуется вывести последовательность ходов для перекладывания всех колец на третий стержень в таком порядке: номер кольца, с какого стержня, на какой стержень. Кольца нумеруются от самого маленького до самого большого. Количество ходов не должно превышать 105.
Поиском по форуму находятся решения, написанные исключительно на С.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.02.2014, 18:19
Ответы с готовыми решениями:

Ремонт в Ханое
Постановлением ЮНЕСКО оригинал Ханойской башни был подвергнут реставрации. В связи с этим во время пользования головоломкой нельзя было...

Ремонт ПММ Electrolux ESF 2410 TypB50, Ремонт электронной платы
Знакомый мастер по ремонту крупной бытовой техники принес мне электронную плату с ПММ Electrolux ESF 2410 TypB50. Электрически сложные...

Ремонт Ремонт промышленной техники, Как насчет открыть ветку для профессионалов по ремонту промышленных СМ
Есть предложение создать отдельную закрытую тему для специалистов по промышленной техники (СМА, сушки, гладильные катки) разных марок?...

1
0 / 0 / 0
Регистрация: 09.02.2014
Сообщений: 31
10.02.2014, 20:47  [ТС]
Даже и не думал, что эта задача вызовет такое затруднение у гуру форума. На всякий случай скопирую сюда решения на С++. Может кто-нибудь сможет перевести с С на Паскаль:
https://www.cyberforum.ru/post878563.html

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
33
34
35
36
#include <iostream>
#include <string.h>
#include <conio.h>
using namespace std;
string inverse(string s1)
{
    string s2=s1;
    int i=0;
    int size=0;
    while(s1[i]!='\0')
    {
        size++;
        i++;
    }
    i=0;
    while(s1[i]!='\0')
    {
        s2[i]=s1[size-i-1];
        i++;
    }
    return s2;
}
string theway(int n)
{
    string s1;
    if(n==1) s1="AB BC";
    if(n==2) s1="AB BC AB CB BA BC AB BC";
    if(n>2) s1=theway(n-1)+" AB "+inverse(theway(n-1))+" BC "+theway(n-1);
    return s1;
}
int main()
{
    cout<<theway(3);
    getch();
    return 0;
}
И еще одно решение:
https://www.cyberforum.ru/post879046.html
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
33
34
35
36
37
38
39
////////////////////////////////////////////////////////////////////////////////////////////
//Найдите кратчайшую последовательность перекладываний, перемещающих башню из n дисков 
//с левого колышка A на правый колышек C, если прямой обмен дисками между A и C запрещен. 
//(Каждое перекладывание должно производиться через средний колышек B. 
//Больший диск нельзя класть на меньший.)
////////////////////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <string>
#include <algorithm>
////////////////////////////////////////////////////////////////////////////////////////////
typedef std::string  T_str;
////////////////////////////////////////////////////////////////////////////////////////////
T_str  get_tower_solution(int n)
{    
    if(n == 0)
    {
        return "";
    }
    else
    {
        T_str  sol_str = get_tower_solution(n - 1);
        T_str  sol_str_rev(sol_str);
        std::reverse_copy(sol_str.begin(), sol_str.end(), sol_str_rev.begin());
        return  sol_str + " AB " + sol_str_rev + " BC " + sol_str;                
    }    
}
////////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    std::cout << "Введите высоту башни: ";
    int n;
    std::cin >> n;
    std::cout << "Решение: "
              << std::endl;
    std::cout << get_tower_solution(n)
              << std::endl;   
    return 0;
}
К сожалению, ввиду моих пока еще небольших познаний в С++, разобрать этот код для меня вызывает затруднение.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.02.2014, 20:47
Помогаю со студенческими работами здесь

Ремонт ПММ Samsung DM-M39AHC/BWT A399G9M8701021T, Пришла в ремонт без шим-преобразователя в модуле
Добрый день! Прошу подсказать какой должен стоять шим в данном модуле. ...

Ремонт БП
Доброго дня! Через мои руки проходят неисправные китайские бп 400-500 ватт типа Accord или LinkWorld, я с паяльником не особо дружу но...

Ремонт БП
Хотелось бы видеть наглядно (видео,фото) как и что нужно перепаивать при каком либо диагнозе(шотки,кандёры,чипы,микрухи)дешёвых и дорогих...

Ремонт ПК
Привет всем!!! Господа мастера по ремонту ПК, прошу, если что, тапками не бросать, если вопрос глупый. В общем, мой вопрос: Я хочу...

Ремонт ВК
сколько будет стоить исцеление видюхи Leadtek gtx 465 от данной артефактной болезни и синего экрана с ошибкой 0х00000116 ?


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru