编程题
求解完全背包问题 ### 题目描述 实现一个算法求解完全背包问题。完全背包问题的介绍如下: - 已知一个容量为 $total\_weight$ 的背包,有不同重量不同价值的物品,问怎样在背包容量限制下达到利益最大化。 - 完全背包问题的每个物品可以无限选用 背包问题求解方法的介绍如下: - 用符号 $V_i$ 表示第 $i$ 个物品的价值,$W_i$ 表示第 $i$ 个物品的体积,$V_{i,j}$ 表示当前背包容量为 $j$ 时,前 $i$ 个物品最佳组合对应的价值。 - 对于当前第 $i$ 个商品,如果包的容量能够装下该物品,即 $W_i \leq j$。此时需要判断装或者不装这个物品的价值对比,选择使价值更大的情况,即 $V_{i,j} = \max {(V_i + V_{i - 1,j - W_i}, V_{i - 1, j})}$ ### 输入描述 第一行为两个数字 $total\_weight、N$,均不超过 1000。$total\_weight$ 含义见题干,$N$ 为物品数量。 接下来 $N$ 行,每行两个数字 $W_i$、$V_i$,均不超过 1000。含义见题干。 ### 输出描述 输出一行,为在背包容量限制下的最大化利益。 ### 输入输出样例 #### 示例 > 输入 ```txt 8 5 3 4 5 5 1 2 2 1 2 3 ``` > 输出 ```txt 16 ```
查看答案
赣ICP备20007335号-2