DP.28 · Алгоритмы
Задача
Вывести последовательность ходов для переноса пирамиды из n дисков.
Алгоритм
Чтобы перенести n дисков: перенести n-1 на промежуточный стержень, переложить нижний, вернуть n-1 наверх.
Исходный код
⇩ Скачать 28-hanoyskie-bashni.dpr
program HanoyskieBashni;
{$mode delphi}{$apptype console}
var steps: Integer;
procedure Perenos(n: Integer; a, b, c: Char);
begin
if n = 0 then Exit;
Perenos(n - 1, a, c, b);
Inc(steps);
WriteLn('Диск ', n, ': ', a, ' -> ', c);
Perenos(n - 1, b, a, c);
end;
var n: Integer;
begin
Write('Число дисков: '); ReadLn(n);
steps := 0;
Perenos(n, 'A', 'B', 'C');
WriteLn('Всего ходов: ', steps);
ReadLn;
end.
Пояснения
Минимальное число ходов равно 2^n - 1. Процедура названа Perenos, чтобы не пересечься с системной Move.