当前位置: 代码迷 >> 综合 >> AcWing 背包模型问题 8. 二维费用的背包问题
  详细解决方案

AcWing 背包模型问题 8. 二维费用的背包问题

热度:64   发布时间:2024-01-31 16:53:59.0
'''
简单二维费用01背包dp(i, j, k)表示前i种物品中做选择,所有第一维总消耗不超过j,第二位总消耗不超过k
的所有可能选法中总价值的最大值
'''dp = [[0] * 120 for _ in range(120)]N, V, M  = map(int, input().split())
arr = []for i in range(N):v, m, w = map(int, input().split())arr.append((v, m, w))for i in range(N):for j in range(V, -1, -1):for k in range(M, -1, -1):if i == 0:dp[j][k] = arr[i][2] if j >= arr[i][0] and k >= arr[i][1] else 0else:if j >= arr[i][0] and k >= arr[i][1]:dp[j][k] = max(dp[j][k], arr[i][2] + dp[j-arr[i][0]][k-arr[i][1]])
print(dp[V][M])