2010-10-12 56 views
0

我正在嘗試編寫一個DFS來解決多個河流問題(Fox山羊白菜,嫉妒的丈夫,僱傭軍和食人族等)。我已經編寫了拼圖課程,但是我在構建解算器時遇到了麻煩。我瞭解DFS是如何工作的,但我無法弄清楚從哪裏開始適應這種設計。River Crossers上的General DFS

每個謎題都有一個move()方法,如果它是有效的移動,則返回true;如果它破壞規則集,則返回false。乘客在一對列表中進行跟蹤,這兩個列表代表河流各自的一側。解算者可以訪問這些列表,但我不知道如何使用它來生成可能的移動集,因爲每次乘客穿越河流時可能的移動都會改變。

回答

2

創建在您的國家(或節點)對象validMoves方法返回數組,的Collection,或者更好的是,一個Iterator超過移動(或以上有效狀態)。從搜索算法中調用它(在「節點擴展」階段)。