现有一个容量大小为V的背包和N件物品,每件物品有两个属性,体积和价值,请问这个背包最多能装价值为多少的物品?
V, n = input().split() V = int(V) n = int(n) W=[] P=[] for i in range(n): w,p = input().split() W.append(int(w)) P.append(int(p)) def knapsack_loop(): f = [[0 for i in range(V+1)] for j in range(n)] for y in range(W[n-1],V+1): f[n-1][y] = P[n-1] for i in range(n-2,-1,-1): for y in range(V+1): if y>=W[i]: f[i][y] = max(f[i+1][y],f[i+1][y-W[i]]+P[i]) else: f[i][y] = f[i+1][y] return f f=knapsack_loop() print(f[0][V])
def knapsack(V , n , vw ): dp=[[0]*(V+1) for _ in range(n+1)] for i in range(1,n+1): vi=vw[i-1][0] wi=vw[i-1][1] for j in range(1,V+1): if vi>j: dp[i][j]=dp[i-1][j] else: dp[i][j]=max(dp[i-1][j],dp[i-1][j-vi]+wi) return dp[-1][-1] V , n =map(int,input().split()) vw=[] for _ in range(n): v,w=map(int,input().split()) vw.append([v,w]) print(knapsack(V , n , vw ))