01背包
0-1 背包问题:给定 n 种物品和一个容量为 C 的背包,物品 i 的重量是 wi,其价值为 vi 。
问:应该如何选择装入背包的物品,使得装入背包中的物品的总价值最大?
更具体的,抽象问题为:
有n个可选项,价值为vi,耗费wi,在总耗费为C的情况下选取,求总价值最大
使用dp[i][j]表示面对第i个可选项,耗费为j时所能取到的最大值,面临的只有两种选择,取当前项,或者不取当前项:
dp[i][j]={
dp[i−1][j],j<wimax(dp[i][j−wi]+vi,dp[i−1][j])j>=wi dp[i][j]=\begin{cases}dp[i-1][j], &\text j<wi \\ max(dp[i][j-wi]+vi,dp[i-1][j]) &\text j>=wi \end{cases} dp[i][j]={
dp[i−1][j],