• BNU OJ 1027 金币系统


    金币系统

    1000ms
    65535KB
     
    64-bit integer IO format: %lld      Java class name: Main

    YC大牛自从杭州归来,喜欢没事儿摆个地摊儿什么的的赚点零钱买装备。经过一个星期的苦苦支撑,终于裸奔了一把鹰角弓出来。-_-
    他在摆摊的过程中吃了不少苦头,比如,没有零钱什么的。这样的话,有人来买东西的话他就会因为找不开钱而让价。因此他希望能得知某种面值可以用多少种方式得到,比如15块的面值,可以由2个7元面值的和1个1元面值的组成。这样他定价为1块的物品一般比较容易找零钱。
    为了明确题目的意图,再举一例,现有的货币系统1、2、5、10等面值。这样18元的价格可以有18x(1元), 9x(2元), 8x(2元)+2x(1元), 3x(5元)+1x(2元)+1x(1元), 等表示方法。
    你的任务就是,给定面值的硬币Vi,硬币个数无限多,求出N的价格可以有多少种表示方法。

     

    Input

    第一行为一个数字Z,表示一下有Z组测试数据。
    每一组测试数据由两行组成,
    第一行为两个数V,N。有V  (1 <= V <= 25)种硬币,和需要表示的价格N (1 <= N <= 10,000)。
    第二行V个数,空格分隔。每一个数Vi表示一种已有的硬币面值。

     

     

    Output

    每组测试数据有一行输出,包括一个数。表示N的价值在由Vi组成的金币系统中有p种表示法。

     

    Sample Input

    1
    3 10
    1 2 5
    
    
     

    Sample Output

    10
     

    Hint

    数据量可能会比较大,保证long long不会溢出。

     

    Source

    Author

    XsugarX
     
     
    解题:dp。。。
     
     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <cstdlib>
     5 #include <vector>
     6 #include <climits>
     7 #include <algorithm>
     8 #include <cmath>
     9 #define LL long long
    10 using namespace std;
    11 LL dp[10010],d[30];
    12 int main(){
    13     int i,kase,n,v,j;
    14     scanf("%d",&kase);
    15     while(kase--){
    16         scanf("%d %d",&n,&v);
    17         for(i = 0; i < n; i++)
    18             scanf("%lld",d+i);
    19         memset(dp,0,sizeof(dp));
    20         dp[0] = 1;
    21         for(i = 0; i < n; i++){
    22             for(j = 0; j+d[i] <= v; j++){
    23                 dp[j+d[i]] += dp[j];
    24             }
    25         }
    26         printf("%lld
    ",dp[v]);
    27     }
    28     return 0;
    29 }
    View Code
  • 相关阅读:
    从体制内的国家干部转变为自由职业者-2017年总结
    为什么选择Django?
    Django contrib Comments 评论模块详解
    Django 2.0 新特性 抢先看!
    Python 为何能坐稳 AI 时代头牌语言
    为什么说Python 是大数据全栈式开发语言
    继承中的构造方法
    super关键字
    方法的重写
    类的继承与访问控制
  • 原文地址:https://www.cnblogs.com/crackpotisback/p/3830226.html
Copyright © 2020-2023  润新知