完全背包 POJ 1384

来源:互联网 发布:office for 破解mac 编辑:程序博客网 时间:2024/05/16 18:54
#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;}

0 0
原创粉丝点击