Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторное задание №2.2

.docx
Скачиваний:
1
Добавлен:
28.06.2022
Размер:
16.83 Кб
Скачать

Разработать рекурсивную программу, решающую классическую задачу — «Ханойская башня». Даны три стержня, на одном из которых находится стопка n-го количества дисков, причём диски имеют не одинаковый размер (диски различного диаметра) и расположены таким образом, что по мере прохождения, сверху вниз по стержню диаметр дисков постепенно увеличивается. То есть диски меньшего размера должны лежать только на дисках большего размера. Необходимо переместить эту стопку дисков с начального стержня на любой другой из двух оставшихся (чаще всего это третий стержень). Один из стержней (чаще всего это второй) использовать как вспомогательный. Перемещать можно только по одному диску, при этом диск большего размера никогда не должен находиться над диском меньшего размера.

#include <iostream>

#include <stdlib.h>

void hanoi(int num, char base, char final, char mid)

{

if (num != 0)

{

hanoi(num - 1, base, mid, final);

std::cout << base << " переместить на " << final << std::endl;

hanoi(num - 1, mid, final, base);

}

}

int main()

{

int num;

std::cout << "Введите количество колец: ";

std::cin >> num;

hanoi(num, 'B', 'M', 'F');

return 0;

}