不是VIP会员,不能显示答案

题目解答

题目:
问题描述:有一天小明来到一台神奇的取款机前,取款机可以无限提供某些特定面额的货币,小明想知道他要取出x元共存在几种不同的方案(取出顺序的不一样认为是相同的方案,具体以样例为准)。

输入格式
第一行一个整数m,表示提供的货币种数。
第二行共m个用空格隔开的数字,表示其具体面额。
第三行一个整数x,表示需要取出的钱额。
输出格式:输出一个整数,表示方案数。

输入样例
3
1 2 5
4

输出样例
3

输出说明 取出4元的3种方案分别为(2,2),(1,1,2),(1,1,1,1)。
程序清单
var 
    dp: array[ 0 ..10001] of longint; 
    a: array[1..10] of longint; 
    i, j, x, m:longint; 
begin 
    read(m); 
    for i := 1 to m do read(a[i]); 
     readln(x)  ; 
	 fillchar(dp, sizeof(dp), 0); 
    dp[0] :=  1  ; 
    for i := 1 to m do 
        for j := 0 to x do 
        begin 
            if  j+a[i]>x   then break; 
            if dp[j] = 0 then  continue  ;
            dp[j+a[i]] := dp[j+a[i]] + dp[j] ; 
        end; 
    writeln(dp[x]); 
end. 
考点:
分析:
解答:
评论:
老师: