mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 16:54:50 +08:00
添加 背包问题理论基础多重背包 Python解法
This commit is contained in:
@ -204,6 +204,29 @@ class multi_pack{
|
|||||||
```
|
```
|
||||||
### Python:
|
### Python:
|
||||||
|
|
||||||
|
```python
|
||||||
|
|
||||||
|
C, N = input().split(" ")
|
||||||
|
C, N = int(C), int(N)
|
||||||
|
|
||||||
|
# value数组需要判断一下非空不然过不了
|
||||||
|
weights = [int(x) for x in input().split(" ")]
|
||||||
|
values = [int(x) for x in input().split(" ") if x]
|
||||||
|
nums = [int(x) for x in input().split(" ")]
|
||||||
|
|
||||||
|
dp = [0] * (C + 1)
|
||||||
|
# 遍历背包容量
|
||||||
|
for i in range(N):
|
||||||
|
for j in range(C, weights[i] - 1, -1):
|
||||||
|
for k in range(1, nums[i] + 1):
|
||||||
|
# 遍历 k,如果已经大于背包容量直接跳出循环
|
||||||
|
if k * weights[i] > j:
|
||||||
|
break
|
||||||
|
dp[j] = max(dp[j], dp[j - weights[i] * k] + values[i] * k)
|
||||||
|
print(dp[-1])
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
### Go:
|
### Go:
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user