• 完全背包 poj 1384


    #include<cstdio>
    #include<cmath>
    #include<iostream>
    #include<conio.h>
    using namespace std;
    const int maxn=500;
    const int maxdp=10010;
    int p[maxn],w[maxn];
    int dp[maxdp];

    int main()
    {
     //freopen("in.txt","r",stdin);
     int t;
     scanf("%d",&t);                                             //次数
     while(t--){
      int w1,sum,n;scanf("%d%d%d",&w1,&sum,&n);
      sum-=w1;                                                //背包容量
      for(int i=0;i<n;i++)scanf("%d%d",&p[i],&w[i]);          //每种金币数据          
      memset(dp,-1,sizeof(int)*(sum+1));                      //dp值清为-1  为完全背包的前提条件
      dp[0]=0;                                                //dp[0]为没有价值的情况 清为零 初始化
      for(int i=0;i<n;i++){                                   //0-n
       for(int j=w[i];j<=sum;j++){                         //完全背包   j=w[i]   w为金币的重量   自家
        if(dp[j]!=-1&&dp[j-w[i]]!=-1)dp[j]=min(dp[j],dp[j-w[i]]+p[i]);      //状态转移判断
        else if(dp[j-w[i]]!=-1)dp[j]=dp[j-w[i]]+p[i];
       }
      }
      if(dp[sum]==-1)puts("This is impossible.");              //输出
      else printf("The minimum amount of money in the piggy-bank is %d.\n",dp[sum]);
     }
     
    }

  • 相关阅读:
    运维常见面试题
    python常见面试题
    常见面试题
    常用算法之‘归并排序’
    python库大全
    Springboot拦截器无效,解决办法
    Springboot 不返回页面,只反回文本
    SpringBoot 接收参数的几种常用方式(转载)
    mysql 查询每个分组的前几名
    Java中TimeZone类的常用方法
  • 原文地址:https://www.cnblogs.com/amourjun/p/5134197.html
Copyright © 2020-2023  润新知