Вопрос задан 24.06.2023 в 04:58. Предмет Информатика. Спрашивает Гандалоев Умар.

На С++!! 20 БАЛЛОВ!!! Ханойские башни Головоломка “Ханойские башни” состоит из трёх стержней,

пронумерованных числами 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 32 1 21 3 23 1 31 2 12 2 31 1 3Вот код, нужно его доделать: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);}
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. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для решения головоломки "Ханойские башни" с использованием функции hanoi, вы можете оставить вашу функцию hanoi без изменений, но вызывать ее с правильными параметрами, чтобы записать последовательность действий. Для этого вам нужно будет модифицировать функцию так, чтобы она принимала еще один параметр - поток вывода (например, ostream& out), в который вы будете выводить последовательность действий. Вот доработанный код:

cpp
#include <iostream> using namespace std; void hanoi(int n, int f, int t, ostream& out) { if (n == 0) { return; } int v = 6 - f - t; hanoi(n - 1, f, v, out); out << n << " " << f << " " << t << endl; hanoi(n - 1, v, t, out); } int main() { int n; cin >> n; // Открываем файл для вывода последовательности действий ofstream outputFile("hanoi_output.txt"); // Вызываем функцию hanoi с потоком вывода hanoi(n, 1, 3, outputFile); // Закрываем файл outputFile.close(); return 0; }

Этот код сначала открывает файл "hanoi_output.txt" для записи последовательности действий. Затем он вызывает функцию hanoi с этим файлом вместо стандартного вывода. После завершения работы функции, файл закрывается.

После выполнения программы, вы найдете последовательность действий в файле "hanoi_output.txt".

0 0

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

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

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

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