Я пытаюсь написать DFS, чтобы решить множество проблем при пересечении реки (Fox Goat Cabbage, Realous Husbands, Mercenaries and Cannibals и т. Д.). Я написал классы головоломки, но у меня возникли проблемы с структурированием моего решателя. Я понимаю, как работает DFS, но не могу понять, с чего начать адаптировать его к этому дизайну.
В каждой головоломке есть метод move (), который возвращает true, если это верный ход, или false, если он нарушает набор правил. Пассажиры отслеживаются в паре списков, которые представляют каждую соответствующую сторону реки. У решателя есть доступ к этим спискам, но я не уверен, как использовать это для генерации возможного набора движений, так как возможные движения будут меняться каждый раз, когда пассажира переправляют через реку.