给定一个数字N和一组数字S,找出S的数字的总和小于或等于N的方式的数量.S中的数字可以出现不止一次。例如,当N = 3且S = {1,2}时,答案为6.在此示例中,1,1 + 1,2,1 + 1 + 1,1 + 2,2 + 1小于或等于3。
答案 0 :(得分:0)
S = {1, 2}
时,N = 0, 1, 2...
的答案为0, 1, 3, 6, 11, 19, 32...
。想想为什么这些数字可能与Fibonacci序列相同,减去2。
答案 1 :(得分:0)
S={n1, n2, …, nk}
时,您有f(N)=f(N-n1)+f(N-n2)+…+f(N-nk)
。因此,您只需为f(i)
计算i < nk
,然后就可以使用公式f(n)
轻松计算(f(n),f(n+1),…,f(n+nk))=(f(0),f(1),…,f(nk))*A^n
,其中A
是companion matrix的{{1}}顺序。