USACO-Section2.3 Money Systems

来源:互联网 发布:极客学院 java 编辑:程序博客网 时间:2024/05/21 09:19

2017-9-11

题目描述

给你v种纸币分别有不同的值,求用他们来表示N元的不同种数

解答

典型的背包问题

代码

/*ID: 18795871PROG: moneyLANG: C++*/#include<iostream>#include<fstream> #include<cstring>using namespace std;const int N = 25,M = 10000;ifstream fin("money.in");ofstream fout("money.out");int x[N+1];long long dp[N+1][M+1];int main(){    int i,j,k,n,cnt;    fin>>n>>cnt;    for (i=1;i<=n;i++){        fin>>x[i];    }    for (i=0;i<=N;i++) dp[i][0]=1;    for (i=1;i<=n;i++){        for (j=1;j<=cnt;j++){            for (k=0;k<=j/x[i];k++){                dp[i][j]+=dp[i-1][j-x[i]*k];            }        }    }    fout<<dp[n][cnt]<<endl;     return 0;}
原创粉丝点击