
一、01背包问题
给定:
- 价值数组
v = {8, 10, 6, 3, 7, 2}
- 重量数组
w = {4, 6, 2, 2, 5, 1}
- 背包容量
c = 12
解决方案分析
1. 二维动态规划
定义 m[i,j]
:从前 i
个物品中选择,总体积不超过 j
的最大价值。
- 如果
j < w[i-1]
:m[i,j] = m[i-1,j]
(不能选择第i
个物品) - 否则:
m[i,j] = max(m[i-1,j], m[i-1,j-w[i-1]] + v[i-1])
(选择或不选择第i
个物品)
原创5/14/25大约 6 分钟