В
Все
М
Математика
О
ОБЖ
У
Українська мова
Х
Химия
Д
Другие предметы
Н
Немецкий язык
Б
Беларуская мова
М
Музыка
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
У
Українська література
Р
Русский язык
Ф
Французский язык
П
Психология
О
Обществознание
А
Алгебра
М
МХК
Г
География
И
Информатика
П
Право
А
Английский язык
Г
Геометрия
Қ
Қазақ тiлi
Л
Литература
И
История
1amon1
1amon1
14.05.2020 19:58 •  Информатика

Спро ханойские башни расписать порядок ходов для перекладывания 5 дисков со второго стержня на третий. если что, 31 ход всего.

Показать ответ
Ответ:
nika0494
nika0494
06.10.2020 03:27
Крутить это все в уме - чистое наказание. Проще было написать программу.

// PascalABC.NET 3.2, сборка 1417 от 28.03.2017
// Внимание! Если программа не работает, обновите версию!

type
  Pinnacle=record
    St:Stack<integer>;
    No:integer;
  constructor (n:integer);
  begin
    St:=new Stack<integer>;
    No:=n
  end;
end;
 
var
  MoveNo:integer;

procedure MoveDisk(s1,s2:Pinnacle);
begin
  if s1.St.Count>0 then begin
    MoveNo+=1;
    s2.St.Push(s1.St.Pop);
    Writeln(MoveNo:3,': №',s2.St.Peek,' ',s1.No,' -> ',s2.No)
    end
end;
   
procedure MovePinnacle(n:integer; s1,s2,s3:Pinnacle);
begin
  if n=0 then exit;
  MovePinnacle(n-1,s1,s3,s2);
  MoveDisk(s1,s2);
  MovePinnacle(n-1,s3,s2,s1);
end;

begin
  var n:=5;
  var p1:=new Pinnacle(1);
  var p2:=new Pinnacle(2);
  var p3:=new Pinnacle(3);
  Range(n,1,-1).ForEach(i->p2.St.Push(i));
  MoveNo:=0;
  MovePinnacle(n,p2,p3,p1);
end.

Результат работы
  1: №1 2 -> 3
  2: №2 2 -> 1
  3: №1 3 -> 1
  4: №3 2 -> 3
  5: №1 1 -> 2
  6: №2 1 -> 3
  7: №1 2 -> 3
  8: №4 2 -> 1
  9: №1 3 -> 1
 10: №2 3 -> 2
 11: №1 1 -> 2
 12: №3 3 -> 1
 13: №1 2 -> 3
 14: №2 2 -> 1
 15: №1 3 -> 1
 16: №5 2 -> 3
 17: №1 1 -> 2
 18: №2 1 -> 3
 19: №1 2 -> 3
 20: №3 1 -> 2
 21: №1 3 -> 1
 22: №2 3 -> 2
 23: №1 1 -> 2
 24: №4 1 -> 3
 25: №1 2 -> 3
 26: №2 2 -> 1
 27: №1 3 -> 1
 28: №3 2 -> 3
 29: №1 1 -> 2
 30: №2 1 -> 3
 31: №1 2 -> 3

Иллюстрация первых пяти шагов приведена во вложении.

Спро ханойские башни расписать порядок ходов для перекладывания 5 дисков со второго стержня на трети
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота