簡體   English   中英

自下而上的動態編程

[英]bottom up dynamic programming

我試圖編寫一個動態程序,計算使用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]

要填充第n-th列表條目,您需要使用循環限制n+1

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

也值得改變返回

return dp[n]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM