背包问题
//dp[ J ] 表示 钱的和为 J 的时候有多少种情况
//对于第 I 种面值,如果用的话,那么 DP[J]= DP[J]+DP[J-w[ i ] ] ;
#include<stdio.h>
#include<iostream>
using namespace std;
long long dp[10002];
int main()
{
freopen("money.in","r",stdin);
freopen("money.out","w",stdout);
dp[0]=1;
int n,v;
cin>>v>>n;
for(int i=0;i<v;i++)
{
int temp;
cin>>temp;
for(int j=temp;j<=n;j++)
dp[j]+=dp[j-temp];
}
cout<<dp[n]<<endl;
return 0;
}