動態規劃 完全揹包 思想理解

2021-10-12 17:35:34 字數 1160 閱讀 3493

我們還是直接拉題來看吧,本篇是一道入門題,照應標題,用來介紹該類問題的思路。

有 n種物品和乙個容量是 v

的揹包,每種物品都有無限件可用。

第 i

種物品的體積是 v**i,價值是 w**i

求解將哪些物品裝入揹包,可使這些物品的總體積不超過揹包容量,且總價值最大。

輸出最大價值。

輸入格式

第一行兩個整數,n,v

,用空格隔開,分別表示物品種數和揹包容積。

接下來有 n

行,每行兩個整數 v**i,w**i,用空格隔開,分別表示第 i

種物品的體積和價值。

輸出格式

輸出乙個整數,表示最大價值。

資料範圍

00輸入樣例

4 5

1 22 4

3 44 5

輸出樣例:
10
好,以上就是原題,下面附上**和思路。

# include

intmain

(void

)int dp[n]

[v+1];

//該處陣列含義 dp[5][6]表示前6種物品 在體積為6的揹包中能裝得最大價值

for(i =

0;i <= v;

++i)

}int j;

for(i =

1;i < n;

++i)

}printf

("%d"

,dp[n-1]

[v])

;return0;

}

下面在來一段優化的**:一維陣列的實現

# include

# define x 10000

int dp[x]

;int

main

(void

)for

(i =

0;i <= v;

++i)

}int j;

for(i =

1;i < n;

++i)

}printf

("%d"

,dp[v]);

return0;

}

完全揹包 動態規劃

描述 直接說題意,完全揹包定義有n種物品和乙個容量為v的揹包,每種物品都有無限件可用。第i種物品的體積是c,價值是w。求解將哪些物品裝入揹包可使這些物品的體積總和不超過揹包容量,且價值總和最大。本題要求是揹包恰好裝滿揹包時,求出最大價值總和是多少。如果不能恰好裝滿揹包,輸出no輸入 第一行 n 表示...

完全揹包 動態規劃

題目 有n種物品和乙個容量為v的揹包,每種物品都有無限件可用。放入第i種物品的費用是ci,價值是wi,求解 將哪些物品裝入揹包,可使這些物品耗費的費用和不超過揹包容量,且價值總和最大。分析 一 建立狀態方程 可以轉化為01揹包問題求解 dp i v 表示前i件種物品放入容量為v的揹包的最大價值,則有...

動態規劃揹包問題 完全揹包

問題描述 有n種物品,每種均有無窮多個。第i個物品的體積為vi,重量為wi。選一些物品裝到容量為c的揹包中,使得揹包內物品在總體積不超過c的前提下重量盡量大。問題分析 開乙個陣列f i j 表示前i種物品中選取若干件物品放入剩餘空間為j的揹包中所能得到的最大重量。每種物品無窮個,所以還要有乙個k遍歷...