蓝桥备赛指南(8):01背包模型
模型简述:
有一个体积为V的背包,商店有n个物品,每个物品有一个价值P和体积W,每个物品只能只能被拿一次,问能够装得下物品的最大值。
动态规划思想:两种状态表示即拿或者不拿。
状态表示:
设dp[i][j]表示:到第i个物品时,拿的总体积为j的情况下的最大值。
状态转移方程:
状态转移方程:dp[i][j]=max(dp[i-1][j],dp[i-1][j-w]+v);
返回值:dp[n][V];
模型的优化:
思路:从后往前更新
旧状态转移方程:dp[i][j]=max(dp[i-1][j],dp[i-1][j-w]+v)l
新的状态转移方程:d[j]=max(dp[j],dp[j-w]+v)(此时,dp[j]表示:物品重量为j的情况下的最大价值)