您的位置:首页 > 其它

01背包问题 动态规划

2015-11-06 22:36 232 查看
Given N, M.

先确定objective 是value

先top-bottom, 考虑 i 与 i-1的关系

f[i][m]=max{f[i−1][m],f[i−1][m−wi]+vi}f[i][m] = \max\{f[i-1][m], f[i-1][m-w_i] + v_i\}

再bottom-top来构建这个matrix,

先求 f[1][0:M]

再求 f[2][0:M]

再由于在递推公式中,m>wim > w_i, 所以其实只要求

先求 f[1][w_1:M]

再求 f[2][w_2:M]

就行

code

for(int i = 1; i< N; i++)
for(int j = w[i]; j < M; j++)
{
f[i][j] = max{f[i-1][j], f[i-1][j-w[i]] + v[i]}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: