Предмет: Информатика, автор: SAmBrErO12

С++

Ханойские башни

Головоломка “Ханойские башни” состоит из трёх стержней, пронумерованных числами 1, 2, 3. На стержень 1 надета пирамидка из n дисков различного диаметра в порядке возрастания диаметра дисков, если рассматривать их сверху вниз. Диски можно перекладывать с одного стержня на другой по одному, при этом диск нельзя класть на диск меньшего диаметра. Необходимо переложить всю пирамидку со стержня 1 на стержень 3, используя стержень 2 как вспомогательный, за минимальное число перекладываний.

Напишите функцию, которая решает головоломку: для данного числа дисков n печатает последовательность перекладываний в формате a b c, где a — номер перекладываемого диска, b — номер стержня, с которого снимается данный диск, c — номер стержня, на который надевается данный диск.

Например, строка 1 2 3 означает перемещение диска номер 1 со стержня 2 на стержень 3. В одной строке печатается одна команда. Диски пронумерованы числами от 1 до n в порядке возрастания диаметров.

Ответы

Автор ответа: zmikkail
0

Ответ:

#include <iostream>

 

using namespace std;

 

void hanoi_towers(int quantity, int from, int to, int buf_peg)  //quantity-число колец, from-начальное положение колец(1-3),to-конечное положение колец(1-3)

{                               //buf_peg - промежуточный колышек(1-3)

   if (quantity != 0)

   {

       hanoi_towers(quantity-1, from, buf_peg, to);

 

       cout << from << " -> " << to << endl;

 

       hanoi_towers(quantity-1, buf_peg, to, from);

   }

}

 

int main()

{

       setlocale(LC_ALL,"rus");

   int start_peg, destination_peg, buffer_peg, plate_quantity;

   cout << "Номер первого столбика:" << endl;

   cin  >> start_peg;

   cout << "Номер конечного столбика:" << endl;

   cin  >> destination_peg;

   cout << "Номер промежуточного столбика:" << endl;

   cin  >> buffer_peg;

   cout << "Количество дисков:" << endl;

   cin  >> plate_quantity;

 

   hanoi_towers(plate_quantity, start_peg, destination_peg, buffer_peg);

return 0;

}

Объяснение:

Похожие вопросы
Предмет: Русский язык, автор: gsaida19
1)Маленький жёлтый утёнок, смешно припадая к мокрой траве беловатым брюшком и чуть не падая с тонких своих ножек, бегает передо мной и пищит: «Где моя мама? Где мои все? »
2)А у него не мама вовсе, а курица: ей подложили утиных яиц, она их высидела между своими, грела равно всех. 3)Сейчас, перед непогодой, их домик — перевернутую корзину без дна — отнесли под навес, накрыли мешковиной. 4)Все там, а этот затерялся.5) А ну-ка, маленький, иди ко мне в ладони.
6)И в чём тут держится душа?7) Не весит нисколько, глазки чёрные — как бусинки, ножки — воробьиные, чуть-чуть его сжать и нет.8) А между тем — тепленький. 9)И клювик его бледно-розовый, как наманикюренный, уже разлапист. 10)И лапки уже перепончатые,
и жёлт в свою масть, и крыльца пушистые уже выпирают. 11)И вот даже от братьев отличился характером.
12)А мы — мы на Венеру скоро полетим. 13)Мы теперь, если все дружно возьмёмся, за двадцать минут целый мир перепашем.
14)Но никогда — никогда! — со всем нашим атомным могуществом не составим в колбе, и даже если перья и косточки нам дать, — не смонтируем вот этого невесомого жалкенького жёлтенького утёнка...
В каком предложении выражена ирония автора над стремлением современников подчинить себе мир космоса?
4?
6?
12?
14?
Предмет: Окружающий мир, автор: komolova62
Предмет: Математика, автор: denis2020k