价值:记录学习过程的思考,本身就是一场动态规划的前生,记忆化搜索。
void DuoChongBagDp_i_for_k_01bag() {
int n = 10; // 物品种数
int m = 100; // 背包容量
int[] f = new int[m+1];
for (int i = 0; i < n; i++) {
// 这里简单模拟下,可以不一致
int v = 3; // 价值
int w = 2; // 重量/体积
int s = 10; // 第i种物品,能够选的有效个
//这不能用正序,正序的话选到后面你不知道选了多少个当前物品,只能从大到小,一次可以遍历完能放的物品总个数
for (int j = m; j >= 0; j--) {
for (int k = 1; k <= s && k * v >= j; k++) {
f[j] = Math.max(f[j], f[j - k * v] + w * v);
}
}
}
int ans = f[m];
}