我想在Scala中使用遞歸來解決揹包問題,但我的要求是顯示選擇哪些項目保留在揹包中。 availableMoney
表示揹包大小。使用遞歸的揹包解決方案
我的代碼如下:
def knapsack(availableMoney: Int,wt:List[Int],value :List[Int] ,n:Int) : Int= {
if(n == 0 || availableMoney == 0)
return 0
if (wt(n - 1) > availableMoney) {
return knapsack(availableMoney,wt,value, n - 1)
}
else {
var element1 = value(n-1) + knapsack(availableMoney- wt(n-1), wt, value, n-1)
var element2 = knapsack(availableMoney, wt, value, n-1)
return max(element1,element2);
}
}
如何知道哪些項目被選中,保持揹包?