@@ -268,7 +268,7 @@ int main() {
268
268
Java:
269
269
270
270
``` java
271
- public static void main(String [] args) {
271
+ public static void main(String [] args) {
272
272
int [] weight = {1 , 3 , 4 };
273
273
int [] value = {15 , 20 , 30 };
274
274
int bagSize = 4 ;
@@ -307,6 +307,41 @@ Java:
307
307
308
308
309
309
Python:
310
+ ``` python
311
+ def test_2_wei_bag_problem1 (bag_size , weight , value ) -> int :
312
+ rows, cols = len (weight), bag_size + 1
313
+ dp = [[0 for _ in range (cols)] for _ in range (rows)]
314
+ res = 0
315
+
316
+ # 初始化dp数组.
317
+ for i in range (rows):
318
+ dp[i][0 ] = 0
319
+ first_item_weight, first_item_value = weight[0 ], value[0 ]
320
+ for j in range (1 , cols):
321
+ if first_item_weight <= j:
322
+ dp[0 ][j] = first_item_value
323
+
324
+ # 更新dp数组: 先遍历物品, 再遍历背包.
325
+ for i in range (1 , len (weight)):
326
+ cur_weight, cur_val = weight[i], value[i]
327
+ for j in range (1 , cols):
328
+ if cur_weight > j: # 说明背包装不下当前物品.
329
+ dp[i][j] = dp[i - 1 ][j] # 所以不装当前物品.
330
+ else :
331
+ # 定义dp数组: dp[i][j] 前i个物品里,放进容量为j的背包,价值总和最大是多少。
332
+ dp[i][j] = max (dp[i - 1 ][j], dp[i - 1 ][j - cur_weight]+ cur_val)
333
+ if dp[i][j] > res:
334
+ res = dp[i][j]
335
+
336
+ print (dp)
337
+
338
+
339
+ if __name__ == " __main__" :
340
+ bag_size = 4
341
+ weight = [1 , 3 , 4 ]
342
+ value = [15 , 20 , 30 ]
343
+ test_2_wei_bag_problem1(bag_size, weight, value)
344
+ ```
310
345
311
346
312
347
Go:
0 commit comments