力扣 兌換零錢

2021-09-26 10:52:32 字數 726 閱讀 4826

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

通過動態規劃來進行求解:

首先可以將問題拆分成相等的子問題,假設dp[n]等於構成n元的最少的硬幣數,那麼dp[n] = dp[n-m]+dp[m],依次向上遞推,假設有硬幣數為1,2,5,則根據dp[1]=1,dp[2]=1,dp[3]=min(dp[3-1]+dp[1],dp[3-2]+dp[2])依次類推,金額為i的需要的最少的金額為:

dp[i] = min(dp[i],dp[i-coin]+1)如果coin存在,python**如下:

class solution(object):

def coinchange(self, coins, amount):

""":type coins: list[int]

:type amount: int

:rtype: int

"""dp = [100000]*(amount+1)

dp[0] = 0

for i in range(1,amount+1):

for coin in coins:

if i-coin>=0:

dp[i] = min(dp[i],dp[i-coin]+1)

return dp[-1] if dp[-1]!=100000 else -1

刷題37 零錢兌換 力扣)

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

蠻力法兌換零錢及其優化

1.問題闡述 現在需要將若干圓錢兌換成1圓,2圓,5圓的零錢,問有多少種不同的兌換方法,以及具體是哪些.2.問題分析 假如我們最後兌換到的1圓有one張,2圓的有two張,5圓的five張,那麼我們兌換到的零錢總價值為at one 2 two 5 five 所以我們只要判斷最後我們得到的零錢總數是否...

換零錢 見解

n元錢換為零錢,有多少不同的換法?幣值包括1 2 5分,1 2 5角,1 2 5 10 20 50 100元。例如 5分錢換為零錢,有以下4種換法 1 5個1分 2 1個2分3個1分 3 2個2分1個1分 4 1個5分 由於結果可能會很大,輸出mod 10 9 7的結果 input 輸入1個數n,n...