我正在尝试实施背包问题的应用程序,但是却出现堆栈溢出,无法弄清我要去哪里。
public static int knapsack(int bound, Node u, Node end, int len){
if(bound == 0 || u == end) return 0;
for(Node w : u.getNeighbors()) {
if(len + w.getEdge(u).length > bound)
return knapsack(bound, w, end, len);
return Integer.max(w.getTile().coins() + knapsack(bound - w.getEdge(u).length,w,end, len + w.getEdge(u).length), knapsack(bound, w,end, len));
}
return 0;
}
基本上有一个用图表示的迷宫(迷宫中的相邻节点是邻居)。
bound
是要离开的最大移动次数。节点u
是当前节点,end
是出口节点。 len
是路径上距离的总和。
请让我知道我要去哪里。谢谢