01背包 | 每个物品只能使用一次 | | | | | 完全背包 | 物品重复使用 | | | | | |
//方法1先背包,后物品 | | | | | | //方法1先背包,后物品 | | | | | |
for(int j = 0; j <= bagweight; j++) { // 遍历背包容量 | | | for(int j = 0; j <= bagweight; j++) { // 遍历背包容量 | | |
for(int i = 1; i < weight.size(); i++) { // 遍历物品 | | | for(int i = 1; i < weight.size(); i++) { // 遍历物品 | | |
if (j < weight[i]) dp[i][j] = dp[i - 1][j]; | | | | if (j < weight[i]) dp[i][j] = dp[i - 1][j]; | | | |
else dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]); | | else dp[i][j] = max(dp[i - 1][j], dp[i ][j - weight[i]] + value[i]); | |
} | | | | | | | | } | | | | | | | |
| | | | | | | | | | | | | | | |
//方法2先物品后背包 | | | | | | //方法2先物品后背包 | | | | | |
for(int i = 1; i < weight.size(); i++) { // 遍历物品 | | | | for(int i = 1; i < weight.size(); i++) { // 遍历物品 | | | |
for(int j = 0; j <= bagweight; j++) { // 遍历背包容量 | | | for(int j = 0; j <= bagweight; j++) { // 遍历背包容量 | | |
if (j < weight[i]) dp[i][j] = dp[i - 1][j]; | | | | if (j < weight[i]) dp[i][j] = dp[i - 1][j]; | | | |
else dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]); | | else dp[i][j] = max(dp[i - 1][j], dp[i ][j - weight[i]] + value[i]); | |
} | | | | | | | | } | | | | | | | |
| | | | | | | | | | | | | | | |
//方法3一维数组 只能先物品后背包,并且背包要倒序 | | | 一维数组1 | | | | | | |
for(int i = 0; i < weight.size(); i++) { // 遍历物品 | | | | // 先遍历背包,再遍历物品 | | | | | |
for(int j = bagWeight; j >= weight[i]; j--) { // 遍历背包容量 | | for(int j = 0; j <= bagWeight; j++) { // 遍历背包容量 | | |
dp[j] = max(dp[j], dp[j - weight[i]] + value[i]); | | | for(int i = 0; i < weight.size(); i++) { // 遍历物品 | | |
} | | | | | | | | if (j - weight[i] >= 0) dp[j] = max(dp[j], dp[j - weight[i]] + value[i]); |
} | | | | | | | | } | | | | | | | |
| | | | | | | | } | | | | | | | |
| | | | | | | | 一维数组2 | | | | | | |
| | | | | | | | for(int i = 0; i < weight.size(); i++) { // 遍历物品 | | | |
| | | | | | | | for(int j = weight[i]; j <= bagWeight; j++) { // 遍历背包容量 | |
| | | | | | | | dp[j] = max(dp[j], dp[j - weight[i]] + value[i]); | | |
| | | | | | | | } | | | | | | | |
| | | | | | | | } | | | | | | | |
| | | | | | | | | | | | | | | |