0-1背包问题Python 蓝桥杯备战倒计时96天

代码是自己写的 例题没有 所以输入格式上会有局限 可自行改动

#0-1背包问题
N,W=map(int,input().strip().split())#石头个数,背包限重
V=list(map(int,input().split()))#石头价值
V.insert(0,0)
w=list(map(int,input().split()))#石头价值
w.insert(0,0)

#石头重量
dp=[[0]*(N+1) for _ in range(W+1)]#dp[i][j]代表容量为i时 前j个石头的最大价值
for j in range(1,N+1):
    for i in range(0,W+1):
        if w[j]>i:
            dp[i][j]=dp[i][j-1]
        else:
            dp[i][j]=max(dp[i][j-1],dp[i-w[j]][j-1]+V[j])
print(dp[W][N])

分享我学习的过程,看某站上的视频,模仿他以列表的形式来完整表格,一边发现规律一边写,最后总结,发现总结一致,然后自己根据自己列的表就去写代码了 

2022一起加油鸭!这点困难难不倒我~

你可能感兴趣的:(Python,蓝桥杯,蓝桥杯,python,动态规划)