原神哪些是五星角色 原神哪些五星角色可以当主c
下面内容是使用Python实现0 &8211; 1背包难题的示例代码:
def knapsack(capacity, weights, values):
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(values[i - 1] + dp[i - 1][w - weights[i - 1]], dp[i - 1][w])
else:
dp[i][w] = dp[i - 1][w]
return dp[n][capacity]
测试示例
values = [60, 100, 120]
weights = [10, 20, 30]
capacity = 50
print(knapsack(capacity, weights, values))
在上述代码中:
- 创建动态规划数组
- 开头来说创建了一个二维数组
dp
,其中dp[i][j]
表示在前i
个物品中,背包容量为j
时的最大价格。
- 开头来说创建了一个二维数组
- 填充动态规划数组
- 对于每个物品
i
(从1到n
,n
是物品的总数)和每个容量w
(从1到总容量capacity
):- 如果当前物品的重量
weights[i - 1]
小于等于当前容量w
,则需要考虑选择当前物品和不选择当前物品两种情况,取价格较大者。 - 如果当前物品的重量大于当前容量,则不能选择当前物品,
dp[i][w]
的值等于dp[i - 1][w]
。
- 如果当前物品的重量
- 对于每个物品
- 返回结局
- 最终返回
dp[n][capacity]
,即所有物品考虑完后,背包容量为capacity
时的最大价格。
- 最终返回