初见01背包
大概意思就是
每种货物数量1件,选择每种货物的策略是取(1)还是不取(0)。
骷髅头问题和取货物没有两样;
for(int i = 1; i <= n; i++)
{
for(int j = 0; j <= W; j++)
{
if(j < w[i])
{
dp[i+1][j] = dp[i][j];
}
else
{
dp[i+1][j] =max{dp[i][j], dp[i][j-w[i]]+v[i]};
}
}
}
·本问题不可以分割骨头要不然用贪心排序性价比也是不错的选择
需要在意的细节是dp[]的初值;
如果要求背包最后可以装满 那么dp【i】【j】if(j==0)dp[i][j]=0;else dp【i】【j】=-max;(比较少见)
如果对于背包最后装不装满没有要求 dp【i】【j】=0;