九章算法面试题59 背包问题II

来源:互联网 发布:java divide是什么 编辑:程序博客网 时间:2024/05/17 23:58

九章算法官网-原文网址


http://www.jiuzhang.com/problem/59/


题目

有一个大小为m(整数)的背包,和n个体积(大小分别为A[i](整数))和价值(价格分别为B[i](整数))的物品。将这n个物品选一些装到背包中,请问能装价值最大为多少的物品?


在线测试本题

http://www.lintcode.com/en/problem/backpack-ii/


解答

设F[i][j]为前i个物品,选一些组成j的体积,能够获得最大的价值是多少。状态转移方程:f[i][j] = max(f[i-1][j], f[i-1][j-A[i]] + B[i])答案为F[n][0..m] 中取一个最大值。

面试官角度

背包问题是比较常见的面试问题之一。一般来说常见的背包问题的解法需要熟知和熟练。

以下是几道背包问题的在线练习:

 http://www.lintcode.com/zh-cn/problem/backpack/

http://www.lintcode.com/zh-cn/problem/backpack-ii/

http://www.lintcode.com/zh-cn/problem/minimum-adjustment-cost/

0 0
原创粉丝点击