01背包空间优化
当初学01背包的时候,会有这样一个状态转移方程:
约定:
dp[i][j]表示在0~i下标物品中选取,在总金额不超过j的情况下获得的最大价值
v[i]表示第 i 下标的物品的价值
dp[i][j] = max(dp[i-1][j], dp[i-1][j-v[i]]+v[i]);
dp[i-1][j]
对应不选 【第 i 下标】 的物品
dp[i-1][j-v[i]]+v[i]
对应选 【第 i 下标】 的物品
可以很快写出递推的式子
maxPrice表示考虑的最大总金额
共有 0~n-1 下标共n件物品
for(int i=0; i<n; i++)
for(int j=0; j<=maxPrice; j++)
dp[i][