Piggy-Bank
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=1114
解题思路:
题目大意:
给你小猪钱罐的重量和装满钱后的重量,然后给你几组数据,每组数据包括每种钱币的价值与重量,要你求出此时能装满钱罐的最
小价值。
算法思想:
完全背包。
AC代码:
#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
int dp[1000005];
int p[505],w[505];
int main(){
int T;
scanf("%d",&T);
while(T--){
memset(dp,INF,sizeof(dp));
int e,f;
scanf("%d%d",&e,&f);
int sum = f-e,n;
scanf("%d",&n);
for(int i = 0; i < n; ++i)
scanf("%d%d",&p[i],&w[i]);
dp[0] = 0;
for(int i = 0; i < n; ++i){
for(int j = w[i]; j <= sum; ++j){
dp[j] = min(dp[j],dp[j-w[i]]+p[i]);
}
}
if(dp[sum] == INF)
printf("This is impossible.\n");
else
printf("The minimum amount of money in the piggy-bank is %d.\n",dp[sum]);
}
return 0;
}