【发布时间】:2015-05-29 06:54:33
【问题描述】:
我正在研究这个动态编程问题,我一直坚持用 Java 编写迭代解决方案
我们的目标是找出消耗 X 美分所需的最少卡路里数。如果我们不能准确花费 X 美分,那么就没有解决方案。我们有 N 个项目,每个项目都有价值 V 和卡路里 C。
public static void iterative(int[] v, int[] c, String[] items, int X, int num_items)
{
System.out.println("Iterative");
int N = num_items;
int[] min = new int[X];
int i, j;
for(i=1 i < X; i++) {
min[i] = Integer.MAX_VALUE;
}
min[0] = 0;
for(i=1;i<=X;i++)
{
for(j=0;j<N;j++)
{
if(v[j]<=i && ((min[i-v[j]]+c[i]) < min[i])) //Wrong?
{
min[i] = min[i-v[j]] + 1;
}
}
}
}
我想我只是没有真正理解迭代步骤的递归关系。
【问题讨论】:
-
你对背包算法很清楚吗? ?
-
对我来说还是很新,刚刚查看了en.wikipedia.org/wiki/Knapsack_problem 和其他示例。
标签: java dynamic-programming knapsack-problem