形式化描述:给定c求一个n元1-0向量Xi(每种物品要么装要么不装)
Wi Xi(i从1到n连乘累加,Xi=0或1)〈=c
Vi Xi(i从1到n连乘累加,Xi=0或1) 达到最大
...全文
2506打赏收藏
求用动态规划法求解0/1背包问题 !!!
问题描述:给定n种物品和一个背包,物品I的重量是Wi,其价值为Vi,背包的容量为c,问如何选择装入背包的物品,使得装入背包的物品的总价值最大? 形式化描述:给定c求一个n元1-0向量Xi(每种物品要么装要么不装) Wi Xi(i从1到n连乘累加,Xi=0或1)〈=c Vi Xi(i从1到n连乘累加,Xi=0或1) 达到最大
设f(n,w)表示前n个物品装w公斤重时的最大价值
递推式为
f(i,w)=max{f(i-1,w),f(i-1,w-wi)+vi}
算法如下:
开始时候f(0,i)=0 0<=i<=c
for i=1 to n
f(i,0)=0
for j=1 to c
f(i,j)=f(i-1,j)
if w(i)<=j and f(i,j)<f(i-1,j-w(i))+v(i) then
f(i,j)=f(i-1,j-w(i))+v(i)
end j
end i