差不多是赤果果的多重背包~~将方案数跟着传递~结果我WA了3,4次才过!!!原因是
1. 虽然说N<= 10,000...但是!!输入的钱可能大于10,000...这里要continue~~要不就直接给爆了...
2.尼玛最后的结果会可能>2^32阿!!!用long long !!
Program:
/*
ID: zzyzzy12
LANG: C++
TASK: money
*/
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<queue>
using namespace std;
long long s[10005],v,n,x,i;
int main()
{
freopen("money.in","r",stdin);
freopen("money.out","w",stdout);
memset(s,0,sizeof(s));
cin>>v>>n;
while (v--)
{
cin>>x;
if (x>n) continue;
s[x]++;
for (i=1;i<=n-x;i++)
if (s[i]) s[i+x]+=s[i];
}
cout<<s[n]<<endl;
return 0;
}