完全揹包 poj 1384 Piggy Bank

2021-06-25 10:26:04 字數 762 閱讀 8712

完全揹包與01揹包相比,最大的差別在於完全揹包中的任意揹包有多種選擇(0,1,2,3,4,5),而01揹包要求的選擇有(0,1)兩種,所以在尋找狀態轉移方程是01揹包問為

i(1-->n)

j(v->0)

f[j]=max(f[j],f[j-a[i].w]+a[i].p);

這樣保證了每個揹包選擇一次或者0次;

而完全揹包狀態轉移方程是

i(1-->n)

j(0->v)

f[j]=max(f[j],f[j-a[i].w]+a[i].p);

這樣保證了每個包有多次選擇;

此題的思路:用完全揹包找到最小值,同時要求是否可能;

1,把dp陣列初始化,必須是dp[0]=0;其他的是maxn;

2,用狀態轉移方程找出最小的數dp[e],如果為初始化數時,則為不存在此數;

其中dp[0]=0;很重要,我就是沒想出這一步錯的;

考察點:完全揹包的最小值應用;

提交:我錯了好幾次,最後看別人的**看懂的;

經驗:會求出玩全揹包最小值的求解,

#include

#include

#include

#include

using namespace std;

int dp[100000];

int n;

int e,f;

struct ele

a[100000];

int main()

return 0;

}

POJ 1384 完全揹包

題意 給定乙個重量,和各種錢幣的重量,求可以滿足給定重量的錢幣組合中的最小組合。如果存在組合就求出最小值。轉移方程 1 f j 和 f j w i 都可達 則 f j min 2 f j 不可達 但 f j w i 可達 則 f j f j w i p i 3 其餘情況 則不作處理 程式 inclu...

poj 1384完全揹包

題意 給出豬罐子的空質量和滿質量,和n個硬幣的價值和質量,求豬罐子剛好塞滿的的最小價值。思路 選擇硬幣,完全揹包問題,塞滿 初始化為無窮,求最小價值,min。include include includeusing namespace std define inf 10000000 int n,su...

POJ 1384 完全揹包

題意 已知儲蓄罐滿時的質量f以及空時質量e,有n種硬幣,每種硬幣的價值為p,質量為w,求該儲蓄罐中的最少有多少錢?思路 完全揹包思想,問題是在乙個重量下的最小價值 那麼只要變一下符號就好了?include include include include include using namespace...