mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 16:54:50 +08:00
更新背包基础理论01背包-1, 增加Java代码
This commit is contained in:
@ -265,9 +265,46 @@ int main() {
|
||||
|
||||
## 其他语言版本
|
||||
|
||||
|
||||
Java:
|
||||
|
||||
```java
|
||||
public static void main(String[] args) {
|
||||
int[] weight = {1, 3, 4};
|
||||
int[] value = {15, 20, 30};
|
||||
int bagSize = 4;
|
||||
testWeightBagProblem(weight, value, bagSize);
|
||||
}
|
||||
|
||||
public static void testWeightBagProblem(int[] weight, int[] value, int bagSize){
|
||||
int wLen = weight.length, value0 = 0;
|
||||
//定义dp数组:dp[i][j]表示背包容量为j时,前i个物品能获得的最大价值
|
||||
int[][] dp = new int[wLen + 1][bagSize + 1];
|
||||
//初始化:背包容量为0时,能获得的价值都为0
|
||||
for (int i = 0; i <= wLen; i++){
|
||||
dp[i][0] = value0;
|
||||
}
|
||||
//遍历顺序:先遍历物品,再遍历背包容量
|
||||
for (int i = 1; i <= wLen; i++){
|
||||
for (int j = 1; j <= bagSize; j++){
|
||||
if (j < weight[i - 1]){
|
||||
dp[i][j] = dp[i - 1][j];
|
||||
}else{
|
||||
dp[i][j] = Math.max(dp[i - 1][j], dp[i - 1][j - weight[i - 1]] + value[i - 1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
//打印dp数组
|
||||
for (int i = 0; i <= wLen; i++){
|
||||
for (int j = 0; j <= bagSize; j++){
|
||||
System.out.print(dp[i][j] + " ");
|
||||
}
|
||||
System.out.print("\n");
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
Python:
|
||||
|
||||
|
Reference in New Issue
Block a user