Skip to content

Commit 2ff875d

Browse files
Merge pull request #393 from KelvinG-611/master
(1)更新0343.整数拆分.md python3版本 - 小改动 (2)增加背包理论基础01背包-1.md python3部分代码
2 parents 8b4f761 + 737b7c3 commit 2ff875d

File tree

2 files changed

+37
-2
lines changed

2 files changed

+37
-2
lines changed

problems/0343.整数拆分.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ class Solution:
218218
# 假设对正整数 i 拆分出的第一个正整数是 j(1 <= j < i),则有以下两种方案:
219219
# 1) 将 i 拆分成 j 和 i−j 的和,且 i−j 不再拆分成多个正整数,此时的乘积是 j * (i-j)
220220
# 2) 将 i 拆分成 j 和 i−j 的和,且 i−j 继续拆分成多个正整数,此时的乘积是 j * dp[i-j]
221-
for j in range(1, i):
221+
for j in range(1, i - 1):
222222
dp[i] = max(dp[i], max(j * (i - j), j * dp[i - j]))
223223
return dp[n]
224224
```

problems/背包理论基础01背包-1.md

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,7 @@ int main() {
268268
Java:
269269

270270
```java
271-
public static void main(String[] args) {
271+
public static void main(String[] args) {
272272
int[] weight = {1, 3, 4};
273273
int[] value = {15, 20, 30};
274274
int bagSize = 4;
@@ -307,6 +307,41 @@ Java:
307307

308308

309309
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+
```
310345

311346

312347
Go:

0 commit comments

Comments
 (0)