動態規劃筆記1

2021-10-08 07:49:55 字數 830 閱讀 4373

力扣的零錢兌換問題:

給定不同面額的硬幣 coins 和乙個總金額 amount。編寫乙個函式來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回 -1。

示例 1:

輸入: coins = [1, 2, 5], amount = 11

輸出: 3

解釋: 11 = 5 + 5 + 1

示例 2:

輸入: coins = [2], amount = 3

輸出: -1

class

solution

f分別表示是拼出x所需最少硬幣數;拼出x-1所需最少硬幣數,加上最後一枚硬幣1; 拼出x-2所需最少硬幣數,加上最後一枚硬幣2,x-5同理。

if(i>=coins[j]

&&f[i-coins[j]

]!=integer.max_value)

這裡不是遞迴,用for迴圈從小到大的實現比遞迴少了很多重複計算。}}

}if(f[amount]

==integer.max_value)

return f[amount];}

}

題2:乙個機械人位於乙個 m x n 網格的左上角 (起始點在下圖中標記為「start」 )。

機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角(在下圖中標記為「finish」)。

問總共有多少條不同的路徑?

class

solution

else}}

return f[m-1]

[n-1];

}}

演算法筆記 動態規劃1

動態規劃適合求解最優問題,比如最大值最小值等。它可以顯著的降低時間複雜度,提高 的執行效率。0 1 揹包問題 在上篇總結中,用回溯演算法解決了 0 1揹包問題。但是,在求解的過程中,我們應該能想象的出,有些步驟是一直在重複執行。如果揹包的總載重為 9 物品個數為 5 質量分別為 2,2,4,6,3 ...

動態規劃學習筆記(1)

記錄一下慕課學習的筆記,以及例題 遞迴函式有n個引數就定義乙個n維的陣列,陣列的下標是遞迴函式引數的取值範圍。這樣就可以從邊界值開始逐步填充陣列,相當於計算遞迴函式值的逆過程。eg 例題1數字三角形 1.將原問題分解為子問題 將原問題分解為若干個子問題,與原問題的形式相同或類似,只不過規模小了。子問...

演算法筆記 動態規劃 1

求解方法 標準的01揹包問題是指,有n int型 個物品和最多裝重量w int型 的揹包。weight陣列表示物品的重量,即weight i 表示第i個物品的重量 value陣列表示物品的價值,即value i 表示第i個物品的價值。問把哪些物品裝入揹包使得物品價值總和最大,每個物品只能裝一次。舉例...