01背包问题每件物品只有一个,不断对第 i 个物品的状态做出决策,0 / 1 表示选 or 不选
题目在这里
题目有 N 件物品和一个容量是 V 的背包,每件物品只能使用一次。
第 i 件物品的体积是 v~i~ ,价值是 w~i~
求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。
输入格式第一行两个整数N,V ,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 v~i~,w~i~ ,用空格隔开,分别表示第 i 件物品的体积和价值。
输出格式输出一个整数,表示最大价值。
数据范围0 < N, V ≤ 10000 < v~i~, w~i~ ≤1000
输入样例4 51 22 43 44 5
输出样例8
解法二维首先定义 f[i][j]:只装前 i 个物品,背包容量为 j 时的最大价值
如果当前背包容量小于第 i 个物品体积,那么不能选第 i 个物品,则 f[i][j] = f[i - 1][j]
如果当前背包容量大于第 i 个物品体积,那么可以选第 i 个物品
选第 i 个物品时,f[i][j] = f[i - 1 ...