背包的变形题目,告诉你所有硬币加起来的总重量以及每种硬币的重量和价值,要求估算一定重量的硬币的最小价值。
#include<stdio.h>
int dp[10001];
int pp[501];
int ww[501];
int t,e,f,n,p,w,v;
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&e,&f);
v=f-e;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d%d",&pp[i],&ww[i]);
}
for(int i=0;i<=v;i++) dp[i]=0;
for(int i=1;i<=n;i++)
for(int j=ww[i];j<=v;j++)
if(dp[j-ww[i]]||j==ww[i])
if(dp[j]==0||dp[j]>dp[j-ww[i]]+pp[i])
dp[j]=dp[j-ww[i]]+pp[i];
if(v!=0&&dp[v]==0)
printf("This is impossible.\n");
else
printf("The minimum amount of money in the piggy-bank is %d.\n",dp[v]);
}
return 0;
}
poj 1384 Piggy-Bank
最新推荐文章于 2019-07-06 10:25:05 发布