• usaco-Money Systems


    题意:

    给出几种硬币,求可用这几种硬币组合出价值为n的方案数。
    分析:

    设dp[i]表示组合出价值i的方案数,则,dp[i]=∑dp[i-val[j]]。

    #include <iostream>
    #include <string>
    #include <cstdio>
    #include <cmath>
    #include <cstring>
    #include <algorithm>
    #include <vector>
    #include <queue>
    #define range(i,a,b) for(int i=a;i<=b;++i)
    #define LL long long
    #define rerange(i,a,b) for(int i=a;i>=b;--i)
    #define fill(arr,tmp) memset(arr,tmp,sizeof(arr))
    using namespace std;
    int n,v;
    LL val[30],dp[10005];
    void init(){
        cin>>v>>n;
        range(i,0,v-1)cin>>val[i];
        fill(dp,0);
        dp[0]=1;
    }
    void solve(){
        range(i,0,v-1)range(j,val[i],n)dp[j]+=dp[j-val[i]];
        cout<<dp[n]<<endl;
    }
    int main() {
        init();
        solve();
        return 0;
    }
    View Code
  • 相关阅读:
    Spark高级数据分析· 2数据分析
    rtsp 学习
    vs code 体验
    RTP 学习
    libev 学习使用
    TS 数据流分析学习
    linux 编程
    times、 time、clock函数说明
    gcc 学习
    2010912 双模机顶盒学习记录
  • 原文地址:https://www.cnblogs.com/Rhythm-/p/9322803.html
Copyright © 2020-2023  润新知