Dp基礎 簡單揹包問題

2021-08-07 12:30:55 字數 662 閱讀 5535

揹包問題大意:給你乙個揹包有一定的容量,再給你一下些物品,物品有自己的體積和價值,請你選擇價值和最大的一些物品(最體積不超過揹包的容量)

揹包問題思路:逐漸放每乙個物品,找到當前體積的最大價值。

揹包問題的主要**

for(i=1;i<=n;i++)  //逐漸放乙個物品

for(j=m;j>=w[i];j--)  // 列舉揹包放下這個物品的情況,j為揹包的體積,當j#includeconst int m=13000; // 揹包的最大體積(不同題不一樣)

const int n=3500; // 物體數量(也與題目給的範圍有關)

int w[n], v[n]; //w[n] 儲存物體的重量(體積) v[n]儲存物體的價值

int dp[m]; // 體積的最優解

int max(int a,int b)

int main()

memset(dp,0,sizeof(dp));

for(i=1; i<=n; i++)

for(j=m; j>=w[i]; j--)

printf("%d\n",dp[m]);

return 0;

}

dp專題 簡單基礎dp 揹包

按照這個做的 hdu 1864 最大報銷額 01揹包 方法一 double型別的揹包 總數30個 每個最大1000 保留2位有效位。直接把double 100轉換為int型的揹包 看清題目 double型的01揹包 include include include using namespace st...

DP揹包問題的簡單理解

先上題目 題目描述 description 有乙個箱子容量為v 正整數,0 v 20000 同時有n個物品 0 n 30 每個物品有乙個體積 正整數 要求n個物品中,任取若干個裝入箱內,使箱子的剩餘空間為最小。輸入描述 input description 乙個整數v,表示箱子容量 乙個整數n,表示有...

DP 揹包問題

大牛 以下使用滾到陣列 若輸入要求一般,可以邊定義狀態邊輸入,不需儲存 memset f,0,sizeof int n 若求最小值,除 f 0 其餘初始化為 inf,f 0 0是必須的 求最大最小都一樣 確保有從無到有的起點 0 1揹包 一般形式 f i v max f i 1 v f i 1 v ...