背包问题
背包问题是一个很经典的算法问题,根据其复杂程度不同又可分为01背包问题、完全背包问题、多重背包问题、二维背包问题等等。本文讲一讲二维多重背包问题的动态规划解法。
01背包问题
有N件物品和一个容量为V的背包。第i件物品的体积是a[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大
完全背包问题
有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的体积是a[i],价格是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大
多重背包问题
有N种物品和一个容量为V的背包。第i种物品最多有n[i]件,每件体积是a[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大
二维背包问题
有N件物品和一个容量为V,载重为U的背包。第i件物品的体积是a[i],重量是b[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大
二维多重背包问题
二维多重背包问题即是多重背包问题和二维背包问题的结合——有N种物品和一个容量为V,载重为U的背包。第i种物品最多有n[i]件,每件体积是a[i],重量是b[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大
void backpack(int V, int U, int a[], int b[], int w[], int n[], int N) {
int i, j, k, l, *x, ***dp;
//初始化
dp = (int ***) malloc(