Оптимальное решение для головоломки Рива с использованием рекурсии - PullRequest
0 голосов
/ 19 апреля 2020

Я пытаюсь выяснить, как распечатать шаги для решения оптимальной головоломки Рива, но я не могу понять правильный шаг сокращения для рекурсии.

Головоломка Рэва по сути расширение проблемы Ханоя, но с 4 колышками вместо 3. Более подробная информация здесь: https://everything2.com/title/Reve%2527s+puzzle

Гипотеза Фрейма-Стюарта говорит, что значение k равно k = n + 1- sqrt (2 * n-1), где n - общее количество дисков, которые мы должны переместить. Шаг, который я не могу понять - это рекурсия для 4 колышков вместо 3. Мой код для 3 колышков:

private static void revesStepThree(int n, int topDisc, String from, String temp, String to) {
        if (n == topDisc) return;
        revesStepThree(n - 1, topDisc, from, to, temp);
        System.out.println("Move disc " + n + " from " + from + " to " + to);
        revesStepThree(n - 1, topDisc, temp, from, to);

    }

Как я могу изменить это, чтобы работать для 4 колышков? По сути, по ссылке выше я не понимаю шаги 1 и 3 (которые в значительной степени совпадают, за исключением разных колышков).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...