1.钢管问题
长为n的钢管如何截取获得的价值最大,p[i]为截取为i长度的钢管价值
- dp:dp[i]=max{p[j]+dp[i-len[j]]} (0<=len[j]<=i,0<=j<=n)
先遍历背包容量
再每次遍历j找第一次截取时的位置+剩下钢管的最大价值,有顺序{1,2,3},{3,1,2}算两种不同的方案 - dp[i][j]=max(dp[i-1][j],dp[i-1][j-len[i]]+p[i])
先遍历物品个数
变成背包问题,每次装或是不装第i个物品并且只考虑前i个物品,没有顺序算的是组合数,{1,2,3}和{3,2,1}是同一种