- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
HERE背包问题给出了递归解决方案,但我无法理解。为什么没有检查W?如果 W(剩余重量)低于 0,我们不应该返回吗?如果 W 已经小于 0,那么在特定的递归调用中领先一步有何意义?
// Returns the maximum value that can be put in a knapsack of capacity W
int knapSack(int W, int wt[], int val[], int n)
{
// Base Case
if (n == 0 || W == 0)
return 0;
// If weight of the nth item is more than Knapsack capacity W, then
// this item cannot be included in the optimal solution
if (wt[n-1] > W)
return knapSack(W, wt, val, n-1);
// Return the maximum of two cases: (1) nth item included (2) not included
else return max( val[n-1] + knapSack(W-wt[n-1], wt, val, n-1),
knapSack(W, wt, val, n-1)
);
}
最佳答案
请注意,在每次递归调用中,W
的值也会更新。并且我们从剩余权重 W
中减去一个新的权重,只有当它小于 W
时。否则不能包括该重量。此处捕获此逻辑
if (wt[n-1] > W)
return knapSack(W, wt, val, n-1);
正如您在上面看到的,如果新权重大于剩余权重,我们不会通过将 n
的值减少 1
来包含它。如果它小于 W,我们将返回 Max of Knapsack,包括和不包括它。
return max( val[n-1] + knapSack(W-wt[n-1], wt, val, n-1),
knapSack(W, wt, val, n-1)
关于java - Java中Knapsack的递归解法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27993891/
我正在尝试解决背包问题,这也是一个整数规划问题。我研究了几种近似解决方案,例如动态规划、贪心算法、分支定界算法、遗传算法。你能告诉我一个可以帮助实现任何/所有这些算法的库(任何语言)吗? 提前致谢。
我正在尝试解决背包问题,这也是一个整数规划问题。我看过几种近似解,如动态规划、贪心算法、分支定界算法、遗传算法。你能告诉我一个有助于实现任何/所有这些算法的库(任何语言)吗? 提前致谢。 最佳答案 以
这是一个有趣的小项目,我已经开始尝试并最大限度地提高赢得办公室曲棍球池的机会。我试图找到最好的方法来选择 20 名能够在最高工资帽内给我最多分数的球员。 例如,假设原始数据由 玩家姓名 位置(前锋,后
我有一个总数为540000的数字列表。我想将此列表分为3个列表,每个列表总共180000。最有效的编程方法是这样做,假设数字列表是一个平面文件,每个数字为线? 最佳答案 听起来像Knapsack pr
最近,我正在尝试研究和实现背包问题(我几年前研究过)。所以我可以理解并有最优解的想法,比如如果背包值(value)是 100,并且有特定的权重,比如 40、60、100。那么最优解将是 100 来填充
这是我的代码: def knapsack_dynamic(ws, vs, W): n = len(ws) K = [[0] * (W+1)] * (n+1) for i in
我在显示使用过的数字时遇到问题。我正在使用 KnapSack 算法,我想显示我用来获得最高值的所有数字。所以有我的代码: static int max(int a, int b) { int
我正在尝试编写具有给定条件的背包 c# 算法,但我总是遇到两个问题。我收到“索引超出数组范围”错误或我的结果仅为 0。 我找到了几个 Knapsack 实现的代码示例,但无法弄清楚我做错了什么。 代码
我在解决 codechef 上的程序时遇到了一个问题,它是背包问题的修改版本..1.在这里我必须找到所有可能重量的最大成本..1 using namespace std; #define
我已经在线阅读了 01 背包问题的几个解决方案。当总权重为 W 时,他们每个人都试图存储从 0..i 和总权重 w 中选择的子问题权重的解决方案。所以基本上他们需要一个 2D 数组来存储子问题的解决方
我已经编写了 Java 代码来解决 Spoj.com 上的以下问题,但它给了我“超出时间限制”。我不知道为什么会这样,我已经做了太多优化。 The famous knapsack problem. Y
我正在尝试做背包问题,这是我想出的递归解决方案。这可以做得更好吗?我想我需要通过检查我之前是否达到过这种状态来添加内存。我是否需要为 state[c_w][i] 添加状态? 我有意没有使用动态规划,因
我正在学习第一门编程类(class),但现在我陷入了困境。基本上,我们所做的是从文本文件中获取 16 个值(在第一行代码上),并且在第二行代码上有一个值。我们将这 16 个值读入一个数组,并将第二行值
所以我正在努力使用分支定界算法来实现 KnapSack 问题。我已经完成了它的实现,但我遇到了一些奇怪的编译错误,我不知道如何修复: 编译错误 gcc -Wall -pedantic -g -std=
我正在尝试理解 Knapsack 1/0 Problem 的这种动态编程方法但我没能得到算法。 有人能解释一下这个具体的实现吗,摘自Rosetta Code大部头书? 用一些注释更新代码会有很大帮助!
我在给定的任务上苦苦挣扎了将近一个星期,但没有成功找到解决方案,所以这个网站是我最后的希望。 我有0-1 Knapsack问题有 20 个具有不同值和权重的项目,麻袋的最大重量为 524。现在我需要实
这个问题在这里已经有了答案: How to find which elements are in the bag, using Knapsack Algorithm [and not only th
在做一个项目时我遇到了这个问题,我将在这个问题的实际领域之外重新措辞(我想我可以谈论烟花的口径和形状,但这会使理解更加复杂).我正在寻找一种(可能是近似的)算法来解决它。 我有 n 个不同大小的容器,
我在 R 中创建了这个简单的代码来解决具有递归函数的背包程序 n k) { output myfunction k) { + output myfunctio
我正在使用一维数组来获得最终答案,但我还需要获得选定的项目。如何实现? private static int UnboundedKnapsack(int capacity, int n, in
我是一名优秀的程序员,十分优秀!