poj1384-完全背包
具体可以到到网上搜索一下背包九讲,各种类型的背包,不过基础还是01背包。
#include <stdio.h>#include <stdlib.h>#include <string.h>#define Min(a,b) (a<b?a:b)#define Max(a,b) (a>b?a:b)#define inf 0x0FFFFFFF#define nMax 510int E,F,N;int price[nMax], weight[nMax];int f[10010];int newN;void Dp01(){f[0] = 0;for (int i = 1; i <= F-E; ++ i){f[i] = inf;}for (int i = 1; i <= N; ++ i){//for (int j = F-E; j >= weight[i]; -- j)for (int j = weight[i]; j <= F-E; ++ j){f[j] = Min(f[j], f[j - weight[i]] + price[i]);}}if (f[F-E] != inf){printf("The minimum amount of money in the piggy-bank is %d.\n", f[F-E]);}elseprintf("This is impossible.\n");}int main(){int T;int p,w;scanf("%d", &T);while (T --){newN = 1;scanf("%d %d", &E, &F);scanf("%d", &N);for (int i = 1; i <= N; ++ i){scanf("%d %d", &price[i], &weight[i]);//scanf("%d %d", &p, &w);//getNewPW(p, w);}Dp01();}}