Вопрос задан 23.06.2023 в 22:50. Предмет Информатика. Спрашивает Васильев Алёша.

Задача на C++ Ханойские башни Головоломка “Ханойские башни” состоит из трёх стержней,

пронумерованных числами 1, 2, 3. На стержень 1 надета пирамидка из n дисков различного диаметра в порядке возрастания диаметра дисков, если рассматривать их сверху вниз. Диски можно перекладывать с одного стержня на другой по одному, при этом диск нельзя класть на диск меньшего диаметра. Необходимо переложить всю пирамидку со стержня 1 на стержень 3, используя стержень 2 как вспомогательный, за минимальное число перекладываний. Напишите функцию, которая решает головоломку: для данного числа дисков n печатает последовательность перекладываний в формате a b c, где a — номер перекладываемого диска, b — номер стержня, с которого снимается данный диск, c — номер стержня, на который надевается данный диск. Например, строка 1 2 3 означает перемещение диска номер 1 со стержня 2 на стержень 3. В одной строке печатается одна команда. Диски пронумерованы числами от 1 до n в порядке возрастания диаметров. Входные данные Задано натуральное число n≤10 — размер пирамидки. Выходные данные Программа должна вывести минимальный (по количеству произведённых операций) способ перекладывания пирамидки из данного числа дисков. Примеры Ввод Вывод 3 1 1 3 2 1 2 1 3 2 3 1 3 1 2 1 2 2 3 1 1 3
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Чакаев Билал.

Ответ:

#include <iostream>

#include<vector>

using namespace std;

void hanoi(int n, int f, int t) {

   if (n == 0) {

       return;

   }

   int v = 6 - f - t;

   hanoi(n - 1, f, v);

   cout << n << " " << f << " " << t << endl;

   hanoi(n - 1, v, t);

}

int main(){

   int n ;

   cin >> n ;

hanoi(n, 1 ,3);

return 0;

}

Объяснение:

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для решения головоломки "Ханойские башни" можно использовать рекурсивный алгоритм. Вот C++ код, который решает эту задачу:

cpp
#include <iostream> void hanoi(int n, int source, int auxiliary, int target) { if (n > 0) { // Переносим (n-1) дисков с source на auxiliary, используя target в качестве вспомогательного стержня hanoi(n - 1, source, target, auxiliary); // Переносим верхний диск с source на target std::cout << n << " " << source << " " << target << std::endl; // Переносим (n-1) дисков с auxiliary на target, используя source в качестве вспомогательного стержня hanoi(n - 1, auxiliary, source, target); } } int main() { int n; std::cin >> n; hanoi(n, 1, 2, 3); return 0; }

Этот код принимает число дисков n и вызывает функцию hanoi, которая рекурсивно решает задачу перекладывания дисков. Каждый шаг перемещения диска выводится на экран в требуемом формате.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос