Чтобы быстро начать с этого, это источник всех дисков:
и нам нужно переместить все диски с первого стержня на последний стержень
Легкий? Не совсем.
Для этого существуют определенные правила:
См. Правила игры в Ханойской башне.
Подводя итог, перемещайте только один диск за раз: больший диск не может быть помещен поверх меньшего диска, а все диски, кроме перемещаемого, должны быть закреплены.
Типичное решение выглядит следующим образом:
Мы будем использовать рекурсию для создания решения.
Итак, давайте создадим рекурсивный метод, который принимает 4 параметра.
- Количество дисков = 3 (например)
- ИсточникPeg=1
- Место назначения=3
- Запасной колышек=2
RunTowerOfHanoi(счетчик, 1, 3, 2);
Алгоритм:
- Переместите все, кроме последнего диска, на второй стержень
RunTowerOfHanoi(n — 1, SourcePeg, SparePeg, DestinationPeg); //Перемещаем все элементы (кроме последнего) из источника в запасной (с первого на второй стержень)
2. Затем переместите весь диск на третью/целевую привязку.
RunTowerOfHanoi(n — 1, SparePeg, DestinationPeg, SourcePeg); //Теперь перемещаем все из запасного в место назначения (со второго на третье)
Каждый рекурсивный метод вызывается для перемещения диска по одному.
Вот ссылка на Полный код
Метод RunTowerOfHonai: