您的位置:首页 > 其它

完全背包 POJ 1384

2014-04-16 16:46 246 查看
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>

using namespace std;

struct Money {
int value;
int weight;
};

int pigWeight = 0;
int pigMoneyWeight = 0;
int moneyType = 0;
Money mList[510];
long minMoney[10000];

void completePack(int type,int value,int weight)
{
for (int k = weight; k <= pigMoneyWeight - pigWeight; k++) {
if(minMoney[k-weight] < 500000000)
minMoney[k] = min(minMoney[k],minMoney[k-weight] + value);
}
}

int main()
{
int testcase = 0;
scanf("%d",&testcase);
while(testcase--) {
for (int i=0; i<10000; i++) {
minMoney[i] = 500000000;
}
scanf("%d%d",&pigWeight,&pigMoneyWeight);
scanf("%d",&moneyType);
minMoney[0] = 0;
for (int i=1; i<=moneyType; i++) scanf("%d%d",&mList[i].value,&mList[i].weight);
for (int i=1; i<=moneyType; i++) completePack(i,mList[i].value,mList[i].weight);
if(minMoney[pigMoneyWeight-pigWeight] < 500000000)
printf("The minimum amount of money in the piggy-bank is %d.\n",minMoney[pigMoneyWeight-pigWeight]);
else
printf("This is impossible.\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ACM DP poj