0
大多数使用动态编程二项式系数计算的实施方式利用了2维阵列,在这些例子中: http://www.csl.mtu.edu/cs4321/www/Lectures/Lecture%2015%20-%20Dynamic%20Programming%20Binomial%20Coefficients.htm二项式系数
http://www.geeksforgeeks.org/dynamic-programming-set-9-binomial-coefficient/
我的问题是,为何不只是使用的一维阵列是这样计算它:
def C(n, r):
memo = list()
if (r > int(n/2)):
r = n - r
memo.append(1.0)
for i in range(1,r+1):
now = ((n-i+1)*memo[i-1])/i
memo.append(now)
return memo[r]
基本上使用递归公式: C(n,r)=((n-r + 1)/ r)* C(n,r-1)
这具有O(r)复杂性,而2维逻辑具有O nr)复杂性。
我在这里错过了什么吗?
我只想指出,你根本不需要数组,只需要一个变量。 –