我正在尝试用给定条件编写背包c#算法,但我遇到的问题总是存在两个问题.我得到"索引超出了数组的范围"错误或我的结果只是0.
我找到了几个Knapsack实现的代码示例,但是我无法弄清楚我做错了什么.
代码示例:https: //www.programmingalgorithms.com/algorithm/knapsack-problem
http://www.csharpstar.com/csharp-knapsack-problem/
我的代码:
static int Knapsack(int n, int w, int[] s, int[] v)
{
int[,] G = new int[n+1,w+1];
for (int k = 0; k <= n; k++)
{
for (int r = 0; r < w; r++)
{
if (r == 0 || k == 0)
G[k, r] = 0;
else if (s[k] <= r)
G[k, r] = Math.Max(G[k- 1, r], v[k] + G[k - 1, r - s[k]]);
else
G[k, r] = G[k …Run Code Online (Sandbox Code Playgroud)