zoukankan      html  css  js  c++  java
  • POJ 1742 Coins

    其实跟这个很像UVA的一个coins,但是那个是对每个硬币的使用次数没有限制,这次对这个有限制了。

    这个限制怎么去破他,我想了好久好久。最终,还是没想出来,悲剧。后来网上搜了一下,发现这题还是楼教主的“男人不容易”系列中“男人八题”里的最简单的一道。 悲催了。

    记录面值的话,每个面值搜过去就是了。但是这个次数的限制,就需要用另外一种状态去表示他了。

    最核心的就是这个式子:if(used[j-a[i]]<c[i])  used[j]=used[j-a[i]]+1

    贴代码:

    View Code
     1 #include <iostream>
     2 #include <cstring>
     3 using namespace std;
     4 int dp[100010],used[100010],a[110],c[110];
     5 int main()
     6 {
     7     int n,m,i,j;
     8     while(cin>>n>>m)
     9     {
    10         if(n == 0 && m == 0)
    11             break;
    12         for(i = 1;i <= n;i++)
    13             cin>>a[i];
    14         for(i = 1;i <= n;i++)
    15             cin>>c[i];
    16         memset(dp,0,sizeof(dp));
    17         dp[0] = 1;
    18         for(i = 1;i <= n;i++)
    19         {
    20             memset(used,0,sizeof(used));
    21             for(j = 1;j <= m;j++)
    22             {
    23                 if(j - a[i] >= 0 && !dp[j] && dp[j - a[i]] && used[j - a[i]] < c[i])
    24                 {
    25                     dp[j] = 1;
    26                     used[j] = used[j - a[i]] + 1;
    27                 }
    28             }
    29         }
    30         int sum = 0;
    31         for(i = 1;i <= m;i++)
    32             if(dp[i])
    33                 sum++;
    34         cout<<sum<<endl;
    35     }
    36     return 0;
    37 }
  • 相关阅读:
    WebDriverException: Message: 'geckodriver' executable needs to be in PATH.
    Django安装与使用
    初识Django
    python学习之xlrd的使用
    python 学习笔记
    根据当前日期生成一个唯一标识的名称
    用Python生成组织机构代码,附源码
    IO流基础
    多线程
    日期时间类
  • 原文地址:https://www.cnblogs.com/zhexipinnong/p/2455452.html
Copyright © 2011-2022 走看看