Java 河流穿越者的一般情况
我正试图写一个DFS来解决多个跨河问题(狐狸山羊卷心菜、嫉妒的丈夫、雇佣兵和食人族等等)。我已经编写了拼图类,但是我在构建解算器时遇到了问题。我了解DFS是如何工作的,但我不知道从何处着手使其适应这种设计Java 河流穿越者的一般情况,java,oop,depth-first-search,river-crossing-puzzle,Java,Oop,Depth First Search,River Crossing Puzzle,我正试图写一个DFS来解决多个跨河问题(狐狸山羊卷心菜、嫉妒的丈夫、雇佣兵和食人族等等)。我已经编写了拼图类,但是我在构建解算器时遇到了问题。我了解DFS是如何工作的,但我不知道从何处着手使其适应这种设计 每个拼图都有一个move()方法,如果它是有效的移动,则返回true;如果它破坏了规则集,则返回false。乘客在一对代表河流两侧的列表中进行跟踪。解算器可以访问这些列表,但我不确定如何使用它来生成可能的移动集,因为每次乘客过河时,可能的移动都会发生变化。在您的状态(或节点)对象中创建一个va
每个拼图都有一个move()方法,如果它是有效的移动,则返回true;如果它破坏了规则集,则返回false。乘客在一对代表河流两侧的列表中进行跟踪。解算器可以访问这些列表,但我不确定如何使用它来生成可能的移动集,因为每次乘客过河时,可能的移动都会发生变化。在您的状态(或节点)对象中创建一个
validMoves
方法,该方法返回一个数组、一个集合,或者更好的是,迭代器
覆盖移动(或覆盖有效状态)。从搜索算法调用(在“节点扩展”阶段)