一、无限物品的背包问题:
memset(dp,-1,sizeof(dp));
int dpBag(int S) {
int& ans = dp[S];
if(ans >= 0) {
return ans;
}
ans = 0;
for(int i = 1; i <= n; i++) {
if(S >= volumn[i]) {
ans = max(ans, dpBag(S - volumn[i]) + weight[i]);
}
}
return ans;
}
二、0-1背包问题:
memset(f,0,sizeof(f));
for(int i=1; i <= n; i++)
for(int j=0; j<=C; j++)
{
f[i][j] = (i==1 ? 0 : f[i-1][j]);
if(j >=V)
f[i][j] =max(f[i][j],f[i-1][j-V]+W);
}