美文网首页
2022-06-11

2022-06-11

作者: 九楼记 | 来源:发表于2022-06-11 23:14 被阅读0次

    有n件物品和一个容量为v的背包。放入第i件物品的占的空间为Ci,得到的价值是Wi,求解将哪些物品装入背包可以

         使得总价值最大;
    
        首先要明白这个问题不能用贪心来做,因为当前的选择会影响到以后的选择,也就是说当前的选择的最优解
    
        可能会影响到全局的最优解;
    
       考虑用动态规划来做
    
           1.定义状态:
    
                    定义状态dp[i][j]为前i件物品恰放入容量为j的背包时的最大价值;
    
                    那么dp[n][v]就是这个问题的最终解;
    
           2.描述不同状态如何转移: 
    
                     在这个过程中,我们很自然想到的决策就是第i件物品放还是不放;放与不放会直接影响到dp[i][j]的值;
    
                    1.放,那么dp[i][j]的状态可由dp[i-1][j-Ci] + Wi转移过来
    
                    2.不放,那么dp[i][j]的状态可由dp[i-1][j]转移过来
    
                    我们所要做的就是在这两种决策中选取一种最优的;
    
                      所以状态转移方程为dp[i][j] = max(dp[i-1][j-Ci] + Wi , dp[i-1][j]);
    

    相关文章

      网友评论

          本文标题:2022-06-11

          本文链接:https://www.haomeiwen.com/subject/plowmrtx.html