首页 > 科技 >

📦01背包问题模板代码📚

发布时间:2025-04-01 02:37:36来源:

大家好!今天来聊聊经典的 01背包问题 🎒✨。这是一道算法入门中的必修课,非常适合用来锻炼动态规划思维哦!如果还没接触过的话,别担心,下面有模板代码,简单易懂,快收藏起来吧!

首先,什么是01背包?简单来说,就是你有一个容量为 `W` 的背包,有一系列物品,每个物品有自己的重量和价值,只能选择装或不装(即“01”)。目标是让背包装入的物品总价值最大。💡

实现这个算法的核心在于状态转移方程:

`dp[i][j] = max(dp[i-1][j], dp[i-1][j-weight[i]] + value[i])`

其中 `dp[i][j]` 表示前 `i` 个物品在背包容量为 `j` 时的最大价值。

下面是简洁的 Python 模板代码👇:

```python

def knapsack(weights, values, W):

n = len(weights)

dp = [[0] (W+1) for _ in range(n+1)]

for i in range(1, n+1):

for j in range(W+1):

if j >= weights[i-1]:

dp[i][j] = max(dp[i-1][j], dp[i-1][j-weights[i-1]] + values[i-1])

else:

dp[i][j] = dp[i-1][j]

return dp[n][W]

示例调用

weights = [2, 3, 4]

values = [3, 4, 5]

W = 5

print(knapsack(weights, values, W)) 输出:7

```

通过这段代码,你可以轻松解决类似问题啦!🌟 如果觉得有用,记得点赞支持哦~ 😊

免责声明:本答案或内容为用户上传,不代表本网观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。 如遇侵权请及时联系本站删除。