zoukankan      html  css  js  c++  java
  • 01背包 擎天柱 恰好装满 zjut(浙江工业大学OJ) 1355

    http://acm.zjut.edu.cn/

    不完全装满取值初始值都为0,恰好装满f[0]初始值为0,其他的为负无穷。

    得到的玩具的价格按从大到小排序,保证当玩具组合出的价格等于擎天柱价格时,玩具的数量会是最少的

    View Code
     1 #include <cstdio>
     2 #include <cstring>
     3 #include <algorithm>
     4 using namespace std;
     5 int f[10010];
     6 int c[10010];
     7 int main()
     8 {
     9     int n,m;
    10     int p[20];
    11     while(~scanf("%d",&n))  //读数
    12     {
    13         for(int i= 0 ; i<n; i++)
    14         {
    15             scanf("%d",&p[i]);
    16         }
    17         scanf("%d",&m);
    18         memset(c,0,sizeof(c));
    19         for(int i=1; i<=m; i++)//赋初值
    20             f[i] = -10000;
    21         f[0] = 0;
    22         sort(p,p+n);//排序,保证放的玩具最少
    23         for(int i= n-1; f[m] != m &&i>=0; i--)
    24         {
    25             for(int j=m; j>0; j--)
    26             {
    27                 if(p[i] > j) continue;
    28                 int t = f[j-p[i]] + p[i];
    29                 if(t>0)  //能放满
    30                 {
    31                     f[j] = j;
    32                     c[j]= c[j-p[i]] +1;
    33                     if(j == m) break;
    34                 }
    35             }
    36         }
    37         if(f[m] > 0)
    38             printf("%d\n",c[m]);
    39         else
    40             printf("-1\n");
    41     }
    42     return 0;
    43 }
  • 相关阅读:
    iphoneX 兼容
    app 判断网络状态
    app 版本升级
    express 安装
    app打开QQ与陌生人聊天
    app项目中几个常用的cordvoa插件
    axios请求拦截器和相应拦截器
    vue中MD5+base64加密
    想啥写啥
    react canvas圆环动态百分比
  • 原文地址:https://www.cnblogs.com/allh123/p/2981640.html
Copyright © 2011-2022 走看看