1079 PIPI的存錢罐

2021-10-04 01:27:38 字數 810 閱讀 7049

這個問題的原型就是完全揹包問題模型,所不同的是完全揹包問題要求的是最大價值,而這個是最小價值

完全揹包問題的模型**是

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

for (int j = c[i]; j <= v; ++ j)

dp[j] = max(dp[j - c[i]] + w[i], dp[j]);

明確了這個模型是完全揹包問題,我們再來確定初始狀態,dp陣列的初始狀態,dp[0]應該是0,dp[1-m]都inf,原因是想用硬幣更新其值,不然就是乙個硬幣都沒有放入。(感覺模擬求乙個陣列的最小值比較好理解這裡的初始化inf的處理)

既然是求得最小價值,那麼狀態轉移方程應該是dp[j]=min(dp[j-c[i]+w[i],dp[j]);

#includeusing namespace std;

#define inf 1e9

const int n=10005;

int dp[n];

int val[n];

int weight[505];

int main()

for(int i=1;i<=m;++i)

dp[i]=inf; //初始條件

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

}if(dp[m]==inf)

printf("impossible");

else

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

}return 0;

}

1079 PIPI的存錢罐

題目描述 pipi有n種硬幣,每種硬幣有特定的重量wei i 克和它對應的價值val i 已知有乙個承重量為m的存錢罐,當裡面正好裝著重量為m的硬幣時,問你這個存錢罐中硬幣的最小價值是多少?如果不可能存在m克的情況,那麼就輸出 impossible 輸入 多組輸入。第一行包括兩個整數n,m 1 n ...

小明的存錢計畫

時間限制 3000 ms 記憶體限制 65535 kb 難度 2 描述 小明的零花錢一直都是自己管理。每個月的月初媽媽給小明300元錢,小明會預算這個月的花銷,並且總能做到實際花銷和預算的相同。為了讓小明學習如何儲蓄,媽媽提出,小明可以隨時把整百的錢存在她那裡,到了年末她會加上20 還給小明。因此小...

小明的存錢計畫

小明的存錢計畫 時間限制 3000 ms 記憶體限制 65535 kb 難度 2 描述 小明的零花錢一直都是自己管理。每個月的月初媽媽給小明300元錢,小明會預算這個月的花銷,並且總能做到實際花銷和預算的相同。為了讓小明學習如何儲蓄,媽媽提出,小明可以隨時把整百的錢存在她那裡,到了年末她會加上20 ...