hdu 1114 Piggy Bank(完全揹包)

2021-06-25 23:49:17 字數 634 閱讀 1383

題意:給出乙個存錢罐的容量,給出n種硬幣的價值p和重量w(注意:每種硬幣可無限取)

1.如果存錢罐能夠正好塞滿,輸出塞滿存錢罐需要的最少硬幣的價值。

2.若不能完全塞滿,則輸出impossible。

思路:每種物品可以放無限多次。所以為完全揹包問題。此題是求最小值,為完全揹包的變形。

注意初始化 dp[ 0 ]=0;

for i=1..n

for v=0..v

f[v]=max

#include#includeusing namespace std;

int main(){

int t,e,f;//測試用例,空存錢罐的重量,裝滿後存錢罐的重量

int n,p,w;//硬幣種類,價值,重量

int dp[11000];//最小價值

dp[0]=0;//初始化為0

scanf("%d",&t);

while(t--){

scanf("%d%d",&e,&f);

int v=f-e;//存錢罐的容量

int i,j;

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

dp[i]=1234567890;

scanf("%d",&n);

for(i=0;i

完全揹包 HDOJ 1114 Piggy Bank

題目傳送門 題目大意是給出乙個錢罐,錢罐中的錢有一定的重量,同時給出一些硬幣,這些硬幣有自己的重量和價值 每種硬幣有無限個 求錢罐中錢的最少價值。狀態f i j 表示前i件物品放入空間為j的揹包所能取得的最大價值。狀態轉移方程 f i j max f i 1 j k c i k w i 0 k c ...

完全揹包 HDU 1114

今天看了看揹包九講的完全揹包。估計是因為只記住了方程,沒理解透的原因。照著寫,還是錯了 錯就錯在初始化的時候,我全部初始化為0了,然後用max 但是得不到答案。可是初始化出0位置以外,其他都為無窮大,取min,過了 額。去問問高手吧我。再研究了下,猛然回頭,發現,是求揹包裝滿的 最小價值 inclu...

HDU 1114 揹包問題

題意就是 給你一定的空間,一定種類的硬幣,每種硬幣可以重複使用多次,讓我們計算消耗這麼多的空間的最小質量 dp i 1 j 表示的就是從前i種硬幣中挑選質量小於j的最小價值 轉移方程 dp i 1 j min dp i j dp i 1 j w i v i 選取第i個 include include...