DP入門, 0 1揹包問題

2021-08-26 10:58:19 字數 617 閱讀 7122

hloj 1006 0-1揹包問題

hdu 2602 bone collector類似,但要注意輸入順序,問題規模,最重要的是重量為0的骨頭居然也有價值的!

#includeusing namespace std;

#define n 401

#define m 1501

int f[n][m]; //下標從1開始用

//n種物品,各種物品的容量、價值分別在w、v陣列中;c為揹包容量

//狀態:f[i][j],使用前i種物品構成揹包容量為j時能獲得的最大價值

//轉移方程:f[i][j]=max(f[i-1][j], f[i-1][j-w[i]]+v[i]),

//轉移方程中,前者表示不用第i種物品,後者表示用第i種物品

//初值:0種物品時任何容量下能獲得的最大價值都為0

//結果:f[n][c]

int max(int a, int b)

int dpknapsack(int n, int w, int v, int c)

} return f[n][c];

}int main()

return 0;

}

01揹包 DP入門

n個重量和價值分別為w,v的物品。找出總重量不超過w 的物品,求所有挑選方案中價值總和的最大值。n 4 w,v w 5 輸出 7 選0號,1號,3號 理解 n個物品 揹包容量w int w max n v max n weight,value 暴搜 o 2 n int rec int i,int j...

01揹包問題 dp

這道題需要從定義去理解 dp i 1 j 定義為 在前i個物品裡面選出來的總體積不大於j的最大的價值 所以這樣就可以知道了,dp i 1 j 就表示在前i個物體裡面選出來的不超過給定體積的最大價值了 所以清楚定義後就有 如果當前超過了當前體積了 那麼他肯定就是dp i 1 j dp i j 了 如果...

01揹包問題(dp)

思路 填表。以下有幾種情況 情況一 第j件放不進去 當前容量i小於第i件物品 這時所得價值為 dp i j dp i j 1 情況二 第j件不放進去 容量足夠 這時所得價值為 dp i j dp i j 1 情況三 第j件放進去 容量足夠 這時所得價值為 dp i weigh j j 1 value...