zoukankan      html  css  js  c++  java
  • 51nod 1101换零钱(背包)

        

    N元钱换为零钱,有多少不同的换法?币值包括1 2 5分,1 2 5角,1 2 5 10 20 50 100元。
     
    例如:5分钱换为零钱,有以下4种换法:
    1、5个1分
    2、1个2分3个1分
    3、2个2分1个1分
    4、1个5分
    (由于结果可能会很大,输出Mod 10^9 + 7的结果)
    Input
    输入1个数N,N = 100表示1元钱。(1 <= N <= 100000)
    Output
    输出Mod 10^9 + 7的结果

    dp[i]表示i元有多少中表示方法。
    那么dp[j] = dp[j] + dp[j-a[i]];
    #include<map>
    #include<queue>
    #include<stack>
    #include<cmath>
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define INF 99999999
    #define mod 1000000007
    #define ll __int64
    #define lson l,m,rt<<1
    #define rson m+1,r,rt<<1|1
    #define key_value ch[ch[root][1]][0]
    using namespace std;
    const int MAXN = 2010;
    int a[] = {1,2,5,10,20,50,100,200,500,1000,2000,5000,10000};
    int dp[100100];
    int main()
    {
        int n;
        while(cin >>n){
            memset(dp,0,sizeof(dp));
            dp[0] = 1;
            for(int i = 0; i < 13; i++){
                for(int j = a[i]; j <= n; j++){
                    dp[j] = (dp[j] + dp[j - a[i]])%mod;
                }
            }
            cout<<dp[n]<<endl;
        }
    }
  • 相关阅读:
    loadOnStartup = 1
    TP复习8
    TP复习7
    TP复习6
    TP复习5
    TP复习4
    TP复习3
    TP复习2
    TP复习
    document.createElement("A");
  • 原文地址:https://www.cnblogs.com/sweat123/p/5295169.html
Copyright © 2011-2022 走看看