动态规划思想, 完全背包,迭代。
f[i+j] := f[i+j] + f[i];
{
ID: yaoyuan4
PROG: money
LANG: PASCAL
}
Program money;
const
inf = 'money.in'; outf = 'money.out';
var
v, n, i, j, a : longint;
f : array[0..10000] of int64;
begin
assign(input, inf); reset(input);
readln(v, n);
fillchar(f, sizeof(f), 0);
f[0] := 1;
for i := 1 to v do
begin
read(a);
for j := 0 to n - a do
inc(f[j+a], f[j]);
end;
close(input);
assign(output, outf); rewrite(output);
writeln(f[n]);
close(output);
end.