-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
动态规划 - 背包问题 #3
Comments
01背包问题有N件物品和一个容量为V的背包,第i件物品的费用是C[i], 价值是W[i], 求将哪些物品装入背包可以使价值总和最大 基本思路这就是最基础的背包问题,每种物品只有一件,可以选择放或者不放,用 若只考虑第i件物品的策略:
可以得到其状态转移方程:
优化空间复杂度上面的方法时间和空间复杂度均为 观察状态转移方程可以发现:dp数组当前行的计算只用到了前一行前面列的值,这点可以利用滚动数组来优化
优化后的状态转移方程为:
|
二维费用的背包问题对于每件物品,具有两种不同的费用,选择这件物品必须同时付出这两种代价:对于每种代价都有一个可付出的最大值,问怎样选择物品可以得到最大的价值,假设第i件物品需要的两种代价为 算法费用较01背包问题加了一维,只需状态加一维即可,状态转移方程
如前述方法,可以只使用二维数组:
|
完全背包问题有N种物品和一个容量为V的背包,每种物品都可以无限使用,第i件物品的费用是c[i], 价值是w[i],求将哪些物品装入背包可以使价值总和最大 基本思路这个问题非常类似与01背包问题,不同的是每个物品有无限件,也就是对于每个物品,考虑的不是拿或者不拿,而是拿几件的问题 解法
|
翻山开始
The text was updated successfully, but these errors were encountered: