简单的dp问题
dp[ i ]表示组合出 i 可以有多少种方式
则再下一种货币x出现时,则有 for i = x to n dp[ i ] += dp [ i - x ]
dp[ n ]即为答案
/*
ID:xsy97051
LANG:C++
TASK:money
*/
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int v,n,p;
long long dp[10005];
int main()
{
freopen("money.in","r",stdin);
freopen("money.out","w",stdout);
cin>>v>>n;
memset(dp,0,sizeof(dp));
dp[0]=1;
for(int i=1;i<=v;i++)
{
int x;
cin>>x;
for(int j=x;j<=n;j++)
dp[j]+=dp[j-x];
}
cout<<dp[n]<<endl;
return 0;
}