zoukankan      html  css  js  c++  java
  • B

    Description

    设有n种不同面值的硬币,各硬币的面值存于数组T[1:n]中。现要用这些面值的硬币来找钱。可以使用的各种面值的硬币个数存于数组Coins[1:n]中。
    对任意钱数0≤m≤20001,设计一个用最少硬币找钱m的方法。
    对于给定的1≤n≤10,硬币面值数组T和可以使用的各种面值的硬币个数数组Coins,以及钱数m,0≤m≤20001,计算找钱m的最少硬币数。

    Input

    输入数据第一行中只有1个整数给出n的值,第2行起每行2个数,分别是T[j]和Coins[j]。最后1行是要找的钱数m。

    Output

    输出数据只有一个整数,表示计算出的最少硬币数。问题无解时输出-1。

    Sample

    Input 

    3
    1 3
    2 3
    5 3
    18

    Output 

    5

     1 #include <bits/stdc++.h>
     2 
     3 using namespace std;
     4 long long t[15], num[15];
     5 long long dp[20005];
     6 long long inf;
     7 
     8 int main()
     9 {
    10     long long n, i, j, k, m;
    11     cin >> n;
    12     for(i=0;i<n;i++)
    13     {
    14         cin >> t[i] >> num[i];
    15     }
    16     cin >> m;
    17     memset(dp, 0x3f3f3f3f, sizeof(dp));
    18     inf = dp[0];
    19     dp[0] = 0;
    20     for(i=0;i<n;i++)
    21     {
    22         for(j=0;j<num[i];j++)
    23         {
    24             for(k=m;k>=t[i];k--)
    25             {
    26                 dp[k] = min(dp[k], dp[k-t[i]]+1);
    27             }
    28         }
    29     }
    30     if(dp[m]==inf) cout << "-1" << endl;
    31     else cout << dp[m] << endl;
    32     return 0;
    33 }
  • 相关阅读:
    DataGridView如何获取某个数据
    扩展方法
    base和this关键字
    装箱和拆箱
    var,object和dynamic
    const和readonly
    react native回调函数刷新页面
    react native打包android,android9.0以上版本http请求不了怎么办?
    react native中android app怎样打包发布
    React Native 实现页面返回监听
  • 原文地址:https://www.cnblogs.com/0xiaoyu/p/14030344.html
Copyright © 2011-2022 走看看