mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 00:43:04 +08:00
Update 背包问题理论基础完全背包.md
This commit is contained in:
@ -222,44 +222,79 @@ private static void testCompletePackAnotherWay(){
|
|||||||
|
|
||||||
|
|
||||||
Python:
|
Python:
|
||||||
|
先遍历物品,再遍历背包(无参版)
|
||||||
```python
|
```python
|
||||||
# 先遍历物品,再遍历背包
|
def test_CompletePack():
|
||||||
def test_complete_pack1():
|
|
||||||
weight = [1, 3, 4]
|
weight = [1, 3, 4]
|
||||||
value = [15, 20, 30]
|
value = [15, 20, 30]
|
||||||
bag_weight = 4
|
bagWeight = 4
|
||||||
|
dp = [0] * (bagWeight + 1)
|
||||||
dp = [0]*(bag_weight + 1)
|
for i in range(len(weight)): # 遍历物品
|
||||||
|
for j in range(weight[i], bagWeight + 1): # 遍历背包容量
|
||||||
for i in range(len(weight)):
|
|
||||||
for j in range(weight[i], bag_weight + 1):
|
|
||||||
dp[j] = max(dp[j], dp[j - weight[i]] + value[i])
|
dp[j] = max(dp[j], dp[j - weight[i]] + value[i])
|
||||||
|
print(dp[bagWeight])
|
||||||
|
|
||||||
print(dp[bag_weight])
|
test_CompletePack()
|
||||||
|
|
||||||
# 先遍历背包,再遍历物品
|
|
||||||
def test_complete_pack2():
|
|
||||||
weight = [1, 3, 4]
|
|
||||||
value = [15, 20, 30]
|
|
||||||
bag_weight = 4
|
|
||||||
|
|
||||||
dp = [0]*(bag_weight + 1)
|
|
||||||
|
|
||||||
for j in range(bag_weight + 1):
|
|
||||||
for i in range(len(weight)):
|
|
||||||
if j >= weight[i]: dp[j] = max(dp[j], dp[j - weight[i]] + value[i])
|
|
||||||
|
|
||||||
print(dp[bag_weight])
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
test_complete_pack1()
|
|
||||||
test_complete_pack2()
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
先遍历物品,再遍历背包(有参版)
|
||||||
|
```python
|
||||||
|
def test_CompletePack(weight, value, bagWeight):
|
||||||
|
dp = [0] * (bagWeight + 1)
|
||||||
|
for i in range(len(weight)): # 遍历物品
|
||||||
|
for j in range(weight[i], bagWeight + 1): # 遍历背包容量
|
||||||
|
dp[j] = max(dp[j], dp[j - weight[i]] + value[i])
|
||||||
|
return dp[bagWeight]
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
weight = [1, 3, 4]
|
||||||
|
value = [15, 20, 30]
|
||||||
|
bagWeight = 4
|
||||||
|
result = test_CompletePack(weight, value, bagWeight)
|
||||||
|
print(result)
|
||||||
|
|
||||||
|
```
|
||||||
|
先遍历背包,再遍历物品(无参版)
|
||||||
|
```python
|
||||||
|
def test_CompletePack():
|
||||||
|
weight = [1, 3, 4]
|
||||||
|
value = [15, 20, 30]
|
||||||
|
bagWeight = 4
|
||||||
|
|
||||||
|
dp = [0] * (bagWeight + 1)
|
||||||
|
|
||||||
|
for j in range(bagWeight + 1): # 遍历背包容量
|
||||||
|
for i in range(len(weight)): # 遍历物品
|
||||||
|
if j - weight[i] >= 0:
|
||||||
|
dp[j] = max(dp[j], dp[j - weight[i]] + value[i])
|
||||||
|
|
||||||
|
print(dp[bagWeight])
|
||||||
|
|
||||||
|
test_CompletePack()
|
||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
先遍历背包,再遍历物品(有参版)
|
||||||
|
```python
|
||||||
|
def test_CompletePack(weight, value, bagWeight):
|
||||||
|
dp = [0] * (bagWeight + 1)
|
||||||
|
for j in range(bagWeight + 1): # 遍历背包容量
|
||||||
|
for i in range(len(weight)): # 遍历物品
|
||||||
|
if j - weight[i] >= 0:
|
||||||
|
dp[j] = max(dp[j], dp[j - weight[i]] + value[i])
|
||||||
|
return dp[bagWeight]
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
weight = [1, 3, 4]
|
||||||
|
value = [15, 20, 30]
|
||||||
|
bagWeight = 4
|
||||||
|
result = test_CompletePack(weight, value, bagWeight)
|
||||||
|
print(result)
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
Go:
|
Go:
|
||||||
```go
|
```go
|
||||||
|
Reference in New Issue
Block a user