easy:
for(int i=1;i<=n;i++)
{
for(int v=w[i];v<=V;v++)
{
dp[v]=max{dp[v],dp[v-w[i]]+c[i]};
}
}
为什么是正向枚举呢?因为每个物体个数无限个可以重复取,dp[i][v-w[i]]总是已经计算出的结果。
easy:
for(int i=1;i<=n;i++)
{
for(int v=w[i];v<=V;v++)
{
dp[v]=max{dp[v],dp[v-w[i]]+c[i]};
}
}
为什么是正向枚举呢?因为每个物体个数无限个可以重复取,dp[i][v-w[i]]总是已经计算出的结果。