Problem Description
给你一个n种面值的货币系统,求组成面值为m的货币有多少种方案。
Input
输入有多组数据,每组数据第一行:n,m的值,后面n行为每种货币的面值。
Output
对于每组数据输出组成面值为m的货币的方案数。
Sample Input
3 10 1 2 5
Sample Output
10
//类似于完全背包
#include<stdio.h>
#include<string.h>
int a[10005];
__int64 f[10005];
int main()
{
int n, m, i, j;
while(scanf("%d%d", &n, &m) != EOF)
{
memset(f, 0, sizeof(f));
f[0] = 1;
for(i = 1; i <= n; i++)
scanf("%d", &a[i]);
for(i = 1; i <= n; i++)
for(j = a[i]; j <= m; j++)
f[j] += f[j - a[i]];
printf("%I64d\n", f[m]);
}
return 0;
}