2017-07-04 130 views
-1
int knapsack(i, k){ 

    if(i=N){ 

     val= 0; //end of recrusive 

     return val; 
    } 

    if (w[i]>k) // no space anymore 

     val= knapsack(i+1, k); 

    else { 

     a = knapsack(i+1, k) // i don't take with 

     b = knapsack(i+1, k-w[i]) + v[i]; //i take with 

     val= max(a,b); 

    } 

    return val; 
} 

我的问题是,在这种情况下N是什么?在我的程序变量我有重量,价值,maxweight和LinkedList。任何人都可以帮助我?谢谢了解recrusive背景中的伪代码

+0

你得到这段代码的地方应该已经解释过了。 – Carcigenicate

+0

不幸的是,我得到的代码没有准确的解释。只是这个评论:/ /计算索引我和更低的对象的大小为 // k的背包问题的最大值。 –

+0

它甚至不是一块工作的Java代码。而且,在发布之前难以正确设置代码的格式? –

回答

0

N是输入数组/列表中元素的数量。 第一次递归调用是knapsack(0,k),每次递归调用递增i,直到它达到N并且递归结束。

+0

A和B?那是什么 ? –

+0

@JeryozDimitar'a'是'knapsack'算法的结果,它不包含第i个元素,'b'是包含第i个元素的'knapsack'算法的结果。两者中的最大值给出总结果。 – Eran