zoukankan      html  css  js  c++  java
  • ZYF货币系统F917

    【试题描述】

    给你一个n种面值的货币系统,求组成面值为m的货币有多少种方案。样例:设n=3,m=10,要求输入和输出的格式如下:

    【输入】

    第一行包含两个数,分别是n(n<=15)和m(m<=3000)
    以下n行每行包含一个数,表示每种货币的面值

    【输出】

    输出总的方案数

    【输入示例】

    3  10                                //3种面值组成面值为10的方案
    1                                      //面值1
    2                                      //面值2
    5                                      //面值5

    【输出示例】

    10

    【思路】

    这是一道经典的动态规划题目,只需要一维数组即可

    如示例,当面值为一时,共有1种方法,当面值有两个时,需要把前面的方法加起来

    方程:

    dp[j]=dp[j]+dp[j-mz[i]];

    【代码】

    #include<iostream>
    using namespace std;
    typedef long long ll;
    ll n,m;
    ll mz[10005];
    ll dp[10005];
    ll i,j;
    int main()
    {
        cin>>n>>m;
        for(i=1;i<=n;i++)
        {
            cin>>mz[i];
        }
        dp[0]=1;
        for(i=1;i<=n;i++)
        {
            for(j=1;j<=m;j++)
            {
                dp[j]=dp[j]+dp[j-mz[i]];
            }
        }
        if(n==0&&m==0)
        cout<<0;
        else
        cout<<dp[m];
        return 0;
    }

    失踪人口暂时回归

  • 相关阅读:
    课后作业
    动手动脑
    原码,补码,反码
    CodingSouls团队项目冲刺-个人概况(7)
    《人月神话》阅读笔记03
    数据库学习
    家庭小账本——数据库的编写与测试
    家庭小账本——适配器的编写与测试
    UI高级组件
    UI高级组件
  • 原文地址:https://www.cnblogs.com/4D24/p/9509464.html
Copyright © 2011-2022 走看看