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为价值

 

posted @ 2018-05-13 00:39  flyer_duck  阅读(115)  评论(0编辑  收藏  举报