关于py题解
2024-10-09 21:00:24
发布于:湖南
7阅读
0回复
0点赞
经典的01背包。主要是读取物品的重量和价值,然后计算在给定背包容量下可以获得的最大价值。
先读取物品的数量 和背包的容量 。
再读取每个物品的重量 和价值 ,并将价值调整为 。
然后用动态规划:用二维数组 来存储前 个物品在容量为 时的最大价值。
通过两层循环遍历每个物品和每个可能的容量,然后更新 的值。
PS:输出在容量为 时,前 个物品可以获得的最大价值 。
about the code:
def main():
import sys
input = sys.stdin.read
data = input().split()
m = int(data[0])
n = int(data[1])
fw = [0] * (n + 1)
v = [0] * (n + 1)
index = 2
for i in range(1, n + 1):
fw[i] = int(data[index])
v[i] = int(data[index + 1]) * fw[i]
index += 2
f = [[0] * (m + 1) for _ in range(n + 1)]
for i in range(1, n + 1):
for c in range(m + 1):
f[i][c] = f[i - 1][c]
if c >= fw[i]:
f[i][c] = max(f[i][c], f[i - 1][c - fw[i]] + v[i])
print(f[n][m])
if __name__ == "__main__":
main()
这里空空如也
有帮助,赞一个