dp
01背包
从顶部开始,自顶向上。
1 for(int i=1;i<=n;i++){ 2 for(int j=m;j>0;j--){ 3 if(j>=cow[i].w) 4 dp[j]=max(dp[j],dp[j-cow[i].w]+cow[i].v); 5 } 6 } 7 ///m为背包容量,w为重量,v为价值
完全背包,对当前的重量进行自底向上的操作。
1 for(int i=1;i<=n;i++){ 2 for(int j=w[i];j<=m;j++){ 3 dp[j]=max(dp[j],dp[j-w[i]]+v[i]); 4 } 5 } 6 ///m为背包容量,w为重量,v为价值