一个01 背包代码有错,大牛帮忙看看

fx397993401 2013-01-11 03:00:05
运行结果有错,
n 表示物品的个数,weightsum 表示背包的容量

int knapsack(int n)
{
for(int i = 1 ; i <= n ; i ++){
for(int j = 1; j <= weightsum ; j ++){
if(weight[i] <= j)
data[i][j] = max(data[i-1][j] , data[i-1][j-weight[i]] + value[i]);
else
data[i][j] = data[i-1][j];
}
}

return data[n][weightsum];
}


...全文
295 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
shellJ 2013-01-17
  • 打赏
  • 举报
回复
如果条件是n种物品的话,你的解法是没有问题的,但是你的条件是n个物品,这个解法就错了
sosidami 2013-01-12
  • 打赏
  • 举报
回复
data[][]初始化呢? 此外你的第二重循环最好写成

for( int j= weightsum; j>= weight[i]; j--)
    data[i][j]=max(data[i-1][j] , data[i-1][j-weight[i]]  + value[i]);

33,007

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧