zoukankan      html  css  js  c++  java
  • 一本通1273货币系统(方案数背包)

    【题目描述】

    给你一个n种面值的货币系统,求组成面值为m的货币有多少种方案。

    【输入】

    第一行为n和m。

    【输出】

    一行,方案数。

    【输入样例】

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

    【输出样例】

    10          //有10种方案

    思路:这个方案数是累加起来的,怎么累加的呢?比如说,你用5种方案可以拿到五块钱,那你拿到十块钱的方案数,其实就是加上五块钱的方案数。同理,从三块钱拿到十块钱就加上三块钱的方案数等等等等,只要有一种货币可以一次拿到目标,那就加上拿之前的方案数就行了。

    代码模板(本题代码):

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    int v[10010],f[10010];
    int main()
    {
        int n,m;
        cin>>n>>m;
        f[0]=1;//注意要初始化,不然不会累加,加完还是0。
        for(int i=1;i<=n;i++)
            cin>>v[i];
        for(int i=1;i<=n;i++)
            for(int j=m;j>=v[i];j--)
                f[j]+=f[j-v[i]];
        cout<<f[m];
        return 0;
    }
  • 相关阅读:
    [Abp vNext 入坑分享]
    [Abp vNext 入坑分享]
    [Abp vNext 入坑分享]
    [Abp vNext 入坑分享]
    [Abp vNext 入坑分享]
    [Abp vNext 入坑分享]
    [Abp vNext 入坑分享]
    [Abp vNext 入坑分享]
    腾讯云集群服务部署mysql并挂载到服务器
    加密解密五种算法的实现
  • 原文地址:https://www.cnblogs.com/57xmz/p/12896283.html
Copyright © 2011-2022 走看看