zoukankan      html  css  js  c++  java
  • POJ 1276 (多重背包) Cash Machine

    题意:

    有n种纸币,已知每种纸币的面值和数量,求所能凑成的不超过cash的最大总面值。

    分析:

    这道题自己写了一下TLE了,好可耻。。

    找了份比较简洁的代码抄过来了。。poj1276

     1 #include <cstdio>
     2 #include <cstring>
     3 
     4 const int maxn = 12;
     5 const int maxp = 100000 + 10;
     6 
     7 bool vis[maxp];//是否到达总面值i
     8 int used[maxp];//到达总面值i时,该种纸币所用的数量
     9 int a[maxn], b[maxn];//每种纸币的数量以及面值
    10 
    11 int cash, n;
    12 
    13 int main()
    14 {
    15     //freopen("in.txt", "r", stdin);
    16 
    17     while(scanf("%d", &cash) == 1)
    18     {
    19         scanf("%d", &n);
    20         for(int i = 0; i < n; ++i) scanf("%d%d", &a[i], &b[i]);
    21 
    22         memset(vis, false, sizeof(vis));
    23         vis[0] = true;
    24         for(int i = 0; i < n; ++i)
    25         {
    26             memset(used, 0, sizeof(used));
    27             for(int j = b[i]; j <= cash; ++j)
    28                 if(vis[j-b[i]] && !vis[j] && used[j-b[i]] < a[i])
    29                 { vis[j] = true; used[j] = used[j-b[i]] + 1; }
    30         }
    31 
    32         for(int i = cash; i >= 0; --i) if(vis[i]) { printf("%d
    ", i); break; }
    33     }
    34 
    35     return 0;
    36 }
    代码君
  • 相关阅读:
    redis导入导出工具redisdump,centos7安装使用
    mysql 锁表情况,处理笔记
    python语言
    pythonhello world
    常用单词
    Django课堂笔记 1
    JS之随机点名系统
    js之简易计算器
    JS之放大镜效果
    SQLServer索引漫谈
  • 原文地址:https://www.cnblogs.com/AOQNRMGYXLMV/p/4290972.html
Copyright © 2011-2022 走看看