零錢兌換問題 python 動態規劃

2021-10-13 23:28:01 字數 767 閱讀 5701

參考官方第三種解法,自下而上

labuladong的動態規劃做題思路

寫出狀態轉移方程

這個題目應該是正序的,當我們計算到f[x]時,f[x-1],f[x-2],f[x-5]都已經得到結果了

class

solution

(object):

defcoinchange

(self, coins, amount)

:"""

:type coins: list[int]

:type amount: int

:rtype: int

"""# 1.確定base case

dp =

[amount+1]

*(amount+1)

dp[0]

=0# 2.從面值為1開始,計算其最優dp值

for coin in coins:

for i in

range

(coin, amount+1)

: dp[i]

=min

(dp[i]

, dp[i - coin]+1

)return dp[amount]

if dp[amount]

!= amount+

1else

-1

零錢兌換問題

給定不同面額的硬幣 coins 和乙個總金額 amount。編寫乙個函式來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回 1。示例 1 輸入 coins 1,2,5 amount 11 輸出 3 解釋 11 5 5 1 示例 2 輸入 coins 2 amount...

動態規劃 零錢兌換

問題描述 給定不同面額的硬幣 coins 和乙個總金額 amount。編寫乙個函式來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回 1。你可以認為每種硬幣的數量是無限的。比如coins 1,2,5 amount 11,11 5 5 1,最終結果為3 演算法思路 本...

零錢兌換(動態規劃)

leetcode 322 零錢兌換 給定不同面額的硬幣 coins 和乙個總金額 amount。編寫乙個函式來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回 1。示例 1 輸入 coins 1,2,5 amount 11 輸出 3 解釋 11 5 5 1 示例 2...