您的位置:首页 > 其它

01背包和完全背包

2017-02-28 18:50 357 查看
int dp[MAX];

void ()//01背包问题
{
for (int i=0; i<n; ++i)
for (int j=W; j>=w[i]; --j)
{
dp[j] = max (dp[j], dp[j-w[i] + v[i]);
}
printf ("%d", dp[W]);
}
void ()//完全背包问题
{
for (int i=0; i<n; ++i)
for (int j=w[i]; j<=W; ++j)
{
dp[j] = max (dp[j], dp[j-w[i] + v[i]);
}
printf ("%d", dp[W]);
}


01背包问题和完全背包问题都可以用同一个数组来解决,两者的差异就只有循环方向了,重复利用数组可以节省内存空间, 但是使用不好可能留下bug, 所以要格外小心。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: