М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
lyubasorokina1
lyubasorokina1
12.12.2021 14:08 •  Информатика

Задача на 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

👇
Ответ:
7Alsu
7Alsu
12.12.2021

#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;

}

Объяснение:

4,4(38 оценок)
Открыть все ответы
Ответ:
vlabiclavakozlova
vlabiclavakozlova
12.12.2021

Десятичная  двоичная         восьмеричная           шестнадцатиричная

1)

10                 1010                              12                                      A

18                 10010                             22                                     12

322               101000010                   502                                  142

2)

10                1010      

74                                                         112      

92                                                                                                5C  

Числа снизу обозначают систему счисления

4,5(72 оценок)
Ответ:
gorodkatya
gorodkatya
12.12.2021
1) 0*2^0+ 1*2^1=0+ 2=2
10 в двоичной=2 в десятичной
1*2^0+ 0*2^1+0*2^3+1*2^4= 1+0+0+16=17
1001 в двоичной=17 в десятичной
1*2^0+0*2^1+1*2^2= 1+0+4=5
101 в двоичной=5 в десятичной
2) а) 11011
1*2^0+1*2^1+ 0*2^2+1*2^3+1*2^4= 1+2+0+8+16= 26
11011 в двоичной=26 в десятичной
1100
0*2^0+0*2^1+1*2^2+1*2^3= 0+0+4+8=12
1100 в двоичной=12 в десятичной
10011
1*2^0+1*2^1+0*2^2+0*2^3+1*2^4= 1+2+0+0+16=19
10011 в десятичной=19 в двоичной
110101
1*2^0+ 0*2^1+1*2^2+0*2^3+1*2^4+1*2^5=1+0+4+0+16=21
110101 в двоичной = 21 в десятичной
б) 7512
2*8^0+1*8^1+5*8^2+7*8^3=2+8+320+3584=3914
7512 в восмеричной=3914 в десятичной
5327
7*8^0+2*8^1+3*8^2+5*8^3= 7+16+192+2560= 2775
5327 в восьмеричной=2775 в десятичной
в) 8E5
5*16^0+14*16^1+ 8*16^2= 5+224+2048= 2277
8E5 в шестнадцатеричной= 2277 в десятичной
ABC
12*16^0+11*16^1+10*16^2= 12+176+2560+2748
ABC в шестнадцатеричной=2748 в десятичной
4,4(93 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ