动态规划-背包问题总述
2015-09-24 10:21
260 查看
背包问题是这样一类问题——背包有重量限制,要往背包里放物品。每样物品都有自己的价值v与重量w。问怎样放使得背包里物品的总价值最大。
01背包:每样东西只有一个,要么放,要么不放,所以得名01背包
完全背包:每样物品都没有个数限制
不完全背包:不同物品的个数不尽相同
1.所放物品总重量<=j;
2.所装物品为前[0,i]种。
那么状态转移方程dp={max(dp[i−1][j],dp[i−1][j−w[i]]+v[i])dp[i−1][j]j>=w[i]j<w[i]dp=\begin{cases}
max(dp[i-1][j],dp[i-1][j-w[i]]+v[i]) & j>=w[i] \\
dp[i-1][j] & j
01背包:每样东西只有一个,要么放,要么不放,所以得名01背包
完全背包:每样物品都没有个数限制
不完全背包:不同物品的个数不尽相同
01背包
dp[i][j]表示以下两种约束下的最大价值:1.所放物品总重量<=j;
2.所装物品为前[0,i]种。
那么状态转移方程dp={max(dp[i−1][j],dp[i−1][j−w[i]]+v[i])dp[i−1][j]j>=w[i]j<w[i]dp=\begin{cases}
max(dp[i-1][j],dp[i-1][j-w[i]]+v[i]) & j>=w[i] \\
dp[i-1][j] & j
相关文章推荐
- Python获取脚本所在目录的正确方法【转】
- 自定义 TabBar
- android mainfest 中metadata得到数值为null解决方法
- iOS大典之旋转停不下来
- web开发中有关浏览器兼容问题及其解决方案的记录
- mysql正则表达式
- shell tee
- 转 static allocation in java - heap, stack and permanent generation
- 复杂json转换实体bean
- iOS 9变化的特性
- my.cnf 配置
- Java操作Cmd命令
- JVM内存分配与回收分析
- 英语翻译之路-4-20150924
- Windows编程命名规则
- JS+CSS实现简易的滑动门效果代码
- Sql表注释
- Sql表注释
- DeleteFile
- C++ 单例模式