自下而上的动态编程

时间:2018-10-07 18:15:26

标签: python python-3.x algorithm dynamic

我试图编写一个动态程序,计算使用2米,3米,5米的石头可以铺砌道路的方式。当我输入2时,它给了我一个错误,从2到20,应该给出

的输出。
  

1、1、1、3、2、5、6、8、14、16、27、36、51、77、103、155、216、309,   448

当我从3开始输入时,我的代码给出了此结果。我是否误解了这里的内容?

def waysRoad(n):
    if n<0:
        return 0

    dp = [0] * (n+1)
    dp[0] = 1
    dp[1] = 0
    for i in range(2, n):
        sum = 0
        if i >=2:
            sum += dp[i-2]

        if i >=3:
            sum += dp[i-3]
        if i >=5:
            sum += dp[i-5]
        dp[i] = sum
    return dp[i]

1 个答案:

答案 0 :(得分:0)

要填充n-th列表条目,您需要使用循环限制n+1

for i in range(2, n + 1):

也值得将返回更改为

return dp[n]