【发布时间】:2015-03-26 18:59:23
【问题描述】:
如何在 C# 递归模式下的背包问题中找到包中最好的物品?
我试图收集函数为它们返回更大值的索引,但我似乎没有工作....
static int recursiveknapsnack(int i,int W) {
if (i < 0) {
return 0;
} else if (wt[i] > W) {
return recursiveknapsnack(i - 1, W);
} else {
return Math.Max(recursiveknapsnack(i-1, W),recursiveknapsnack(i-1,W - wt[i])+val[i]);
}
}
【问题讨论】:
-
最好的元素是什么意思?背包问题是 NP 难题,因此计算最佳元素需要回溯算法。
-
假设我有 10 件物品,我计算出最大的收益.....我怎样才能找到小偷应该带走的物品?
-
你能展示你目前拥有的代码吗?
-
@alinajimi:如果小偷只能拿一个元素,你应该遍历项目列表,检查小偷是否可以挑选它们,如果可以,取最大值的那个.. .
-
@radio static int recursiveknapsnack(int i,int W) { if (i W) { return recursiveknapsnack(i - 1, W); } else { return Math.Max(recursiveknapsnack(i - 1, W),recursiveknapsnack(i - 1, W - wt[i]) + val[i]); } }
标签: c# algorithm knapsack-problem