HDU 1114

来源:互联网 发布:recorder.js 编辑:程序博客网 时间:2024/06/05 08:14

裸题:完全背包问题,求装满背包的最小价值。

注意初始化,要求完全装满,除了容量为0的背包外,其他全部赋值为inf。

AC代码:

#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>using namespace std;#define inf 0x7ffffffint main(){int t,e,f,n;int w[505],v[505],dp[10010];scanf("%d",&t);while(t--){  scanf("%d%d",&e,&f);  int W=f-e;  scanf("%d",&n);  for(int i=0;i<n;i++)  scanf("%d%d",&v[i],&w[i]);  for(int i=1;i<=W;i++)  dp[i]=inf;  dp[0]=0;  for(int i=0;i<n;i++)for(int j=w[i];j<=W;j++)  {    dp[j]=min(dp[j],dp[j-w[i]]+v[i]);  }  if(dp[W]!=inf)  printf("The minimum amount of money in the piggy-bank is %d.\n",dp[W]);  else printf("This is impossible.\n");}return 0;}

0 0
原创粉丝点击