当前位置: 代码迷 >> 综合 >> hdu1114Piggy-Bank (完全背包)
  详细解决方案

hdu1114Piggy-Bank (完全背包)

热度:98   发布时间:2023-11-06 18:57:57.0

题意:

给定存钱罐的重量,存钱之后的重量,,货币价值及重量。求存钱罐里面最少有多少钱。

思路:

跟完全背包求最大值差不多,不同的是,背包要刚好装满还有dp的数组初始化要为正无穷。

#include<iostream>
#include<cstdio>
#include<algorithm> 
using namespace std;
int dp[10010];
int w[10010],v[10010];
int main(){int T;scanf("%d",&T);while(T--){int st,en,n,co,value,weight;scanf("%d%d%d",&st,&en,&co);n=en-st;for(int i=1;i<=co;i++){scanf("%d%d",&v[i],&w[i]);}for(int i=1;i<=n;i++)dp[i]=1e9;dp[0]=0;for(int i=1;i<=co;i++){for(int j=w[i];j<=n;j++)dp[j]=min(dp[j],dp[j-w[i]]+v[i]);}if(dp[n]==1e9) printf("This is impossible.\n");else printf("The minimum amount of money in the piggy-bank is %d.\n",dp[n]);}return 0;}


  相关解决方案