背包
Accepted丶
A C M 之 路 丶
展开
-
0 - 1背包
递归写法int n,w; int w[MAX_N],v[MAX_N];int rec(int i,int j) { int res; if(i == n) res = 0; else if(j < w[i]) res = rec(i + 1,j); else res = max(rec(i + 1,j),rec(i +原创 2017-03-28 22:02:48 · 334 阅读 · 0 评论 -
完全背包问题
这里相比0 - 1背包,不同的是每种物品的个数上升到无限个,让你找到最优的拿法。对于上面这个图片,在这里大家看不懂的可能是倒数第2行怎么到倒数第一行的。对此,大家只需要看看dp[i + 1][j]的定义就可以了dp[i + 1][j] = max{dp[i - k * w[i]] + k * v[i] | k >= 0}; = max{dp[i][j - k * w[i]]原创 2017-03-28 23:19:12 · 561 阅读 · 0 评论