我認為01揹包就是——對n個物品進行取捨,在一定的限制條件下如何取得最優解的一類問題。
此題和再學01揹包(一) 中的標準01揹包的比較。
標準01揹包和本題的比較
標準01揹包
本題花費(或者代價)
cost[i]
cost[i]
價值(或者貢獻)
val[i]
-cost[i]
限制條件
if(cost[i]<=v) 可放
if( v>=5) 可買
最優解貢獻最大
貢獻最小(即絕對值最大)
錯誤寫法:
#include #include #include #include #include #include #include #include #include #include #include using namespace std;
#define for(i,k,n) for(int i=k;i>n)
}cout<
正確**:
#include #include #include #include #include #include #include #include #include #include #include using namespace std;
#define for(i,k,n) for(int i=k;i>n)
}cout<
再學動態規劃之 01揹包
寫了之後,發現這題跟01揹包還有點區別。但是寫看這個吧。暴力搜尋的方法。就是每個取或者不去。class solution object defgets self,arr,index,target if target 0 return true elif target 0 return false e...
揹包問題之0 1揹包 二
問題描述 有n個物品,第i個物品的重量為w i 價值為v i 選一些物品放入揹包中,使揹包內物品總重量恰好為w的前提下,總價值盡量大。輸入 有多組測試資料,每組資料第一行為2個正整數,分別代表物品的個數n和揹包的容量w,接下來的n行,每行2個正整數,用空格隔開,分別代表物品的重量w和價值v,當n w...
揹包再學習筆記
之前學習的幾個揹包都是背幾個一維陣列的板子,沒有深入的理解其中的含義,當碰到乙個相似的揹包的問題時,板子出現了短板,這時就難於寫出題目 先說 01 揹包 dp i j max dp i 1 j dp i 1 j v i w i 這裡的 i 表示第幾個物品,j表示目前用的揹包體積 還有乙個要注意的是揹...