感覺對這一段代碼不是很理解
f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]}
“f[i-1][v]代表的就是不將這件物品放入背包,而f[i-1][v-c[i]]+w[i]則是代表將第i件放入背包之后的總價值,比較兩者的價值,得出最大的價值存入現在的背包之中。”
可是,一個物體放入背包肯定比不放入時的價值大啊,這有什么比較的必要嗎?
uj5u.com熱心網友回復:
有一個判斷條件你沒寫,這個是容量作為下標,你得考慮背包是否放滿uj5u.com熱心網友回復:
單看這個肯定沒必要呀
uj5u.com熱心網友回復:
f[i-1][v-c[I]] +. w[I]去掉一個 換上另一個
uj5u.com熱心網友回復:
不放入該背包就不消耗容量,可能放后續背包后總的價值更大
uj5u.com熱心網友回復:
兩個放入的不是同一包 對應的是兩種不同的方案 所以要比較如果<=總質量 則要選擇在特定的包中放置該物品
如果>=總質量 則繼承上面的在(包列舉中)特定的包
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/56518.html
標籤:C語言
上一篇:關于回圈輸入結束的問題
