背包
陈子骏
2018-07-08 18:47:15
```
for(int i=1;i<=n;i++)
for(int j=v;j>=v[i];j--)
dp[j]=max(dp[j],dp[j-v[i]]+w[i])//01
for(int i=1;i<=n;i++)
for(int j=v[i];j<=v;j++)
dp[j]=max(dp[j],dp[j-v[i]]+w[i]);//完全
for(int i=1;i<=n;i++)
for(int j=v;j>=v[i];j--)
for(int k=1;k<=c[i];k++)
if(j-k*v[i]>=0)dp[j]=max(dp[j],dp[j-k*v[i]]+k*w[i]);//多重
for(int i=1;i<=n;i++)
for(int j=v;j>=v[i];j--)
for(int k=1;k<=c[i];k++)
if(j>cost[i][k])dp[j]=max(dp[j],dp[j-cost[i][k]]+w[i][k]);//组别
```