Algorithm 这个算法对背包的变化有效吗?
我不确定实际变化有多大,但问题是: 你即将开始一段漫长的旅程,在你出发之前,你需要收拾好你的包。您可以选择N件物品随身携带。每个项目都有一个权重和值,表示它的有用程度。你不能携带超过K公斤的物品。您可以随身携带的物品的最大总价值是多少?(每个项目只能有一份副本。) 我已经创建了一个算法,我认为它可以用DP解决这个问题,但我不确定它是否有效,如果你们中的一个能看一下,那就太好了。注意:它更像是psuedo代码和算法的组合,我也不太确定如何编写 假设k是最大重量。 两个数组:一个包含每个项目的权重w[],另一个包含值v[]Algorithm 这个算法对背包的变化有效吗?,algorithm,knapsack-problem,Algorithm,Knapsack Problem,我不确定实际变化有多大,但问题是: 你即将开始一段漫长的旅程,在你出发之前,你需要收拾好你的包。您可以选择N件物品随身携带。每个项目都有一个权重和值,表示它的有用程度。你不能携带超过K公斤的物品。您可以随身携带的物品的最大总价值是多少?(每个项目只能有一份副本。) 我已经创建了一个算法,我认为它可以用DP解决这个问题,但我不确定它是否有效,如果你们中的一个能看一下,那就太好了。注意:它更像是psuedo代码和算法的组合,我也不太确定如何编写 假设k是最大重量。 两个数组:一个包含每个项目的权重w
for i = 0; i<numberOfItems; i++
{
value = 0
k = MaxWeight;
for(j = i; j<numberOfItems; j++
{
if(j = i)
{
if(k - w[i] >= 0)
{
k = k-w[i]
value = value + v[i]
}
}
else
{
if(k - w[j] >= 0)
{
k = k-w[j]
value = value + v[j]
}
}
}
}
表示i=0;i=0)
{
k=k-w[j]
值=值+v[j]
}
}
}
}
不,你的贪婪算法行不通
检查此示例:
MaxWeight = 12
Items = 4 5 4 4 (each value is 1)
您的算法将选择项目1和2(或项目2和3,或项目3和4)。最佳解决方案是采用第1项、第3项和第4项。不,贪婪算法不起作用 检查此示例:
MaxWeight = 12
Items = 4 5 4 4 (each value is 1)
您的算法将选择项目1和2(或项目2和3,或项目3和4)。最佳解决方案是选择第1项、第3项和第4项。@user2396852如果您需要更多帮助,请随时询问。可以,我正在尝试使用DP来解决它。只要试着计算我的表格,就会让你知道我是否有任何问题。@user2396852如果你需要更多的帮助,请随时询问。会的,我正在尝试使用DP来解决它。如果我有什么问题,我会告诉你的。