[英]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.