h: =proc(n,k,m,l)选项记忆;
`如果`(n=0且k=0,b(l),`如果`(k=0或n>0且n<m,0,
加上(h(n-j,k-1,最大值(m,j),[j,l[]]),j=最大值(1,m)。。n)
+h(n,k-1,m,[0,l[]],[]))
结束时间:
b: =proc(l)选项记忆;
`如果`({l[]}减去{0}={},1,加上(`if`(g(l,i),
b(底土(i=l[i]-1,l)),0),i=1..nops(l))
结束时间:
g: =proc(l,i)局部j;
如果l[i]<1,则返回false
elif l[i]>1,则j从i+1到nops(l)do
如果l[i]<=l[j],则返回false
elif l[j]>0然后中断
fiod fi;真实的
结束时间:
a: =n->h(n$2,0,[]):