当前位置:首页  科技

科技

💡动态规划01背包问题_动态规划01背包问题代码 🎉

2025-03-07 13:24:43
导读 🚀 大家好!今天我们要一起探讨一个经典的动态规划问题——01背包问题。这是一道非常实用的问题,常用于解决资源分配和优化问题。📦💼 01

🚀 大家好!今天我们要一起探讨一个经典的动态规划问题——01背包问题。这是一道非常实用的问题,常用于解决资源分配和优化问题。📦

💼 01背包问题描述的是,在给定的容量下,如何选择物品放入背包中,使得背包内物品的总价值最大。每个物品只能选择放或不放,不能分割。🎒

📝 下面是使用Python实现的一个简单示例,展示了如何利用动态规划来解决这个问题:

```python

def knapsack(weights, values, capacity):

n = len(weights)

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

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

for w in range(1, capacity + 1):

if weights[i - 1] <= w:

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

else:

dp[i][w] = dp[i - 1][w]

return dp[n][capacity]

示例数据

weights = [1, 2, 3]

values = [6, 10, 12]

capacity = 5

print("最大价值:", knapsack(weights, values, capacity))

```

💻 这段代码定义了一个函数`knapsack`,它接受三个参数:物品重量列表`weights`,物品价值列表`values`以及背包的最大容量`capacity`。通过构建一个二维数组`dp`来存储子问题的解,最终得到最大价值。

🌟 动态规划的关键在于理解状态转移方程,并正确地将问题分解为更小的子问题。希望这个例子能帮助你更好地理解和应用01背包问题。如果你有任何疑问,欢迎留言讨论!💬

🔍 更多关于算法的知识,请持续关注我们,让我们一起进步!💪

免责声明:本文由用户上传,如有侵权请联系删除!