原神哪些是五星角色 原神哪些五星角色可以当主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时的最大价格。
- 最终返回
