为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用背包算法[不仅仅是袋子的价值]查找袋子中的哪些元素?

如何使用背包算法[不仅仅是袋子的价值]查找袋子中的哪些元素?

海绵宝宝撒 2019-10-21 12:44:13
我有一个代码,该代码通过背包算法(bin pack NP-hard问题)计算出最佳值:int Knapsack::knapsack(std::vector<Item>& items, int W){    size_t n = items.size();    std::vector<std::vector<int> > dp(W + 1, std::vector<int>(n + 1, 0));    for (size_t j = 1; j <= n; j++)    {        for ( int w = 1; w <= W; w++)        {            if (items[j-1].getWeight() <= w)            {                dp[w][j] = std::max(dp[w][j-1], dp[w - items[j-1].getWeight()][j-1] + items[j-1].getWeight());            }            else            {                dp[w][j] = dp[w][j - 1];            }        }    }    return dp[W][n];}我还需要显示包装中包含的元素。我想创建一个数组,在其中添加一个元素。因此,问题在于添加此附加元素的步骤是什么,或者还有其他更有效的方法吗?问题:我希望能够知道为我提供最佳解决方案的项目,而不仅仅是最佳解决方案的价值。PS。对不起,我的英语不是我的母语。
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 540 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信